/*问题描述
  观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。

  本题要求你找到一些5位或6位的十进制数字。满足如下要求:
  该数字的各个数位之和等于输入的整数。
输入格式
  一个正整数 n (10<n<100), 表示要求满足的数位和。
输出格式
  若干行,每行包含一个满足要求的5位或6位整数。
  数字按从小到大的顺序排列。
  如果没有满足条件的,输出:-1
样例输入
44
样例输出
99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499
样例输入
60
样例输出
-1*/
package test;

import java.util.Scanner;

public class 回文数字 {
    public static void main(String[] arg){
        Scanner input=new Scanner(System.in);
        int n=input.nextInt();
        int num=0;
        for(int i=10000;i<1000000;i++){//判断在给定范围内的数据是否符合条件
            if(is_huiwen(i)){//判断是否为回文数字
                if(samen(i)==n){//判断和是否为n
                    System.out.println(i);                    
                    num++;
                }
            }
        }
        if(num==0){
            System.out.println(-1);
        }
    }

    private static int samen(int i) {//计算该数据的和
        // TODO Auto-generated method stub
        int sum=0;
        int t;
        int m=i;
        for(int j=0;j<2;j++){//计算前两位数的和
            t=m%10;
            sum+=t;
            m/=10;
        }
        if(i<100000){//若数字为5位数
            sum*=2;
            sum+=m%10;
        }else{//若数字为6位数
            sum+=m%10;
            sum*=2;
        }
        return sum;
    }

    private static boolean is_huiwen(int k) {//判断改数是否为回文数
        // TODO Auto-generated method stub
        String str=String.valueOf(k);
        char[] c=str.toCharArray();
        for(int i=0,j=str.length()-1;i<str.length();i++,j--){//i表示前半段的数,j表示后半段的数
            if(i==j||j<i)//5位数
                break;
            if(c[i]!=c[j])//若前后数字不相同则不是回文数
                return false;
        }
        return true;
    }
}