/*
无需输入
输出区间[200,3000]中所有的回文数,一行一个回文数,不需要输出其它无关的字符。
样例输出
202
212
222
232
242
*/
#include<stdio.h>
int main()
{
int a,b,c,m,n,p,q;
for(int i = 200 ; i <= 3000 ; i++ ) {
if( i < 1000 ) {
c = i%10;
b = (i/10)%10;
a = i/100;
if( i == c*100 + b*10 + c ) {
printf("%d\n", i);
}
} else {
m = i/1000;
n = (i/100)%10;
p = (i/10)%10;
q = i%10;
if( i == q*1000 + p*100 + n*10 + m ) {
printf("%d\n", i);
}
}
}
return 0;
}
/*
回文数字
现在要从5位或6位的十进制数字中找出各个数位之和等于n的回文数字;
输入一个整数n(10<=n<=100)
输出所有各个数之和等于n的5位和6位整数,
如果没有满足条件的数字 输出-1
48
699996
789987
798897
879978
888888
897798
969969
978879
987789
996699
*/
#include<iostream>
using namespace std;
int n;
bool judge (int x)
{
int m = 0 , sum = 0;
int digit[6] {};
while(x) {
digit[m++] = x % 10;
sum += x%10;
x /= 10;
}
if(sum != n) {
return false;
}
for(int i = 0; i < m/2; i++) {
if( digit[i] != digit[m-1-i]) {
return false;
}
}
return true;
}
int main()
{
cin >> n;
bool f = false;
for(int i = 10000; i < 1000000; i++) {
if(judge(i)) {
f = true;
cout << i << endl;
}
}
if(f == false)
cout << -1 << endl;
return 0;
}