#include<bits/stdc++.h>
using namespace std;
int n,s,f=0;
const int N=1e7;
char ans[N];
int p=0;
void jinzhi(int a,int i){ //利用栈实现进制转换,将转换到的数字存在ans数组中
if(a>0) {
jinzhi(a/i,i);
int t=a%i;
if(t>9)
ans[p++] ='A'+t-10;
else
ans[p++] ='0'+t;
ans[p]=0;
}
}
bool huiwen(){ //回文数判断
int i=0;
int j=strlen(ans)-1;
int l=j; //7447 4/2=2
for(;i<j;i++,j--)
{
if(ans[i]!=ans[j]) //回文
return false;
if((i<l/2 && ans[i]>ans[i+1])) //递增
return false;
}
return true;
}
int main(){
cin>>n>>s;
for(int i=2;i<=n;i++)
{
strcpy(ans,""); //初始化
p=0;//初始化
jinzhi(s,i);
if(huiwen()) {printf("%d %s\n",i,ans);f=1;}
}
if(!f) printf("guomienasai");
}