#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
using namespace std;
int b;
int a[1000];
char g[12]={'A','B','C','D','E','F','G','H','I','J','K','L'};//标出这些字母
bool judge(int x)
{
int stop=1,tail=1;
while(x!=0)//进制转换
{
a[tail]=x%b;
x=x/b;
tail++;
}
tail--;
for(int i=1;i<=(tail+1)/2;i++)
if(a[i]!=a[tail+1-i])
{
stop=0;//判断是否为回文
break;
}
if(stop==1)
return 1;
else
return 0;
}
void print(int x)
{
int tail=1;
while(x!=0)//照例进制转换
{
a[tail]=x%b;
x=x/b;
tail++;
}
tail--;
for(int i=tail;i>=1;i--)//倒叙输出
{
if(a[i]<=9)
printf("%d",a[i]);
else
printf("%c",g[a[i]-10]);
}
}
int main()
{
scanf("%d",&b);
for(int i=1;i<=300;i++)
{
if(judge(i*i)==1)
{
print(i);//打印这个数
printf(" ");
print(i*i);//打印这个数的平方
printf("\n");
}
}/**/
return 0;
}
/**************************************************************
Problem: 1938
User: admin
Language: C++
Result: Accepted
Time:43 ms
Memory:2080 kb
****************************************************************/