#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
using namespace std;
int a[10000];
int l1,l2;
int hw()//判断回文的函数拉
{
    for (int i=1;i<=l1/2;i++)
        if (a[i]!=a[l1-i+1])
            return 0;
    return 1;
}
int pd(int k,int n)//转化进制的小函数
{
    l1=0;
    do
    {
        a[++l1]=k%n;
        k/=n;
    } while (k!=0);
    return 0;
}
int main()
{

    int n,m;
    cin>>n>>m;
    int i=m+1;//这里要注意!!!
    int k=0;
    while(k<n)//K是记输出了几个数的计数器
    {
        int ans=0;
        for(int j=2;j<=10;j++)//从二进制到十进制一一枚举
        {
            memset(a,0,sizeof(0));//每次记得把这个数组清零
            pd(i,j);
            if(hw()==1)
             {
                 ans++;
             }
        }
        if(ans>=2)//如果有两种以上的进制是回文的,那么输出,K++
        {
            cout<<i<<endl;
            k++;
        }
        i++;
    }
    return 0;
}
/**************************************************************
	Problem: 1939
	User: admin
	Language: C++
	Result: Accepted
	Time:72 ms
	Memory:2112 kb
****************************************************************/