#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
****************************************************************/