本蒟蒻太逊,勿喷......
#include<bits/stdc++.h>
using namespace std;
//__int128 read(){__int128 x=0,f=1;char ch=getchar();while(!isdigit(ch)&&ch!='-')ch=getchar();if(ch=='-')f=-1,ch=getchar();while(isdigit(ch))x=x*10+ch-'0',ch=getchar();return f*x;}void print(__int128 x){if(x<0)putchar('-'),x=-x;if(x>9)print(x/10);putchar(x%10+'0');}
//struct node{};
string tostring(int n) {if (n==0) {return "0";}string str="";bool f=false;if (n<0) {f=true;n=-n;}while (n>0) {char ch='0'+(n%10);str=ch+str;n/=10;}if (f==true) {str = "-" + str;}return str;}
bool hw(string s){if (s.size()%2==1){int mid=s.size()/2+1;for (int i=1; i<=mid-1; i++){if (s[mid-i-1]!=s[mid+i-1]){return false;}}}else{int mid=s.size()/2;if (s[mid-1]!=s[mid]){return false;}for (int i=1; i<=mid-1; i++){if (s[mid-i-1]!=s[mid+i]){return false;}}}return true;}
string jz(int num,int r) {string str;int rmd;char ch;if(num==0) str="0";while(num>0) {rmd=num%r;ch=(rmd<10)?(rmd+'0'):(rmd-10+'A');str=ch+str;num/=r;}if(str.size()==1) str="0"+str; return str;}
//int stringto(string str){int num = 0;istringstream ss(str);ss >> num;return num;}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//freopen("x.in","r",stdin);
//freopen("x.out","w",stdout);
int n;
cin>>n;
for (int i=1; i<=300; i++){
if (n==10){
if (hw(tostring(i*i)))
cout<<i<<" "<<i*i<<endl;
}else{
if (hw(jz(i*i,n))){
cout<<i<<" "<<i*i<<endl;
}
}
}
return 0;
}