#include <bits/stdc++.h>
using namespace std;
string ans;
string jz(int n, int b) { //a为待转数字(十进制),b为需转的进制
ans = "";
do {
int t = n % b; //取余
if (t >= 0 && t <= 9)
ans += t + '0'; //将数字转换为字符
else
ans += t - 10 + 'A'; //若取余结果大于9则将10转换为A,11转换为B,以此类推
n /= b;
} while (n != 0);
//用do{}while()防止输入为0的情况
reverse(ans.begin(), ans.end());
//reverse函数交换其中元素的位置,如若ans="123",则使用此函数之后ans="321"
return ans;
//反向取余得到进制转换后的答案
}
bool check() { //用于判断是否为回文数
for (int i = 0, j = ans.size() - 1; i < j; i++, j--)
if (ans[i] != ans[j])
return false;
return true;
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= 300; i++) {
string ans = jz(i * i, n);//将i*i转换为x进制下的数
if (check()) { //判断i*i是否为回文数
cout << jz(i, n) << " " << ans << endl;
}
}
return 0;
}