#include <algorithm>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;

string delive(string s,int x)
{
    int car = 0;
    for(int i=0;i<s.size();i++)
    {
        int num = car*10 + (s[i]-'0');
        s[i] = num/x + '0';
        car = num%x;
    }
    while(s[0]=='0')s.erase(0,1);
    if(s=="")s="0";
    return s;
}

string Mul(string s1,string s2)
{
    int l1 = s1.size(),l2 = s2.size();
    if(l1<l2)swap(s1,s2);
    reverse(s1.begin(),s1.end());
    reverse(s2.begin(),s2.end());
    int len = l1+l2+2;
    int ans[len];
    memset(ans,0,sizeof(ans));
    for(int i=0;i<s1.size();i++)
    {
        for(int j=0;j<s2.size();j++)
        {
            ans[i+j] +=(s1[i]-'0')*(s2[j]-'0');
        }
    }
    string s="";
    for(int i=0;i<len;i++)
    {
        int num = ans[i]/10;
        ans[i] %= 10;
        ans[i+1] += num;
        char c = ans[i]+'0';
        s = s+c;
    }
    reverse(s.begin(),s.end());
    while(s[0]=='0')s.erase(0,1);
    if(s=="")s="0";
    return s;


}

int main() {
    string s;
    while(cin>>s&&s!="-1")
    {
        while(s[0]=='0')s.erase(0,1);
        int flag = 0;
        for(int i=2;i<=9;i++)
        {
            
            string ans = delive(s,i);
            string now = "";
            char c = i+'0';
            now = now+c;
        //    cout<<ans<<endl;
            string ss = Mul(ans,now);
      //      cout<<ss<<endl;
            if(ss==s)
            {
                cout<<i<<" ";
                flag = 1;
            }
        }
        if(!flag)cout<<"none";
        cout<<endl;
        

            
    }
  //  cout<<delive("30",4)<<endl;
 // cout<<Mul("30","9");
}
// 64 位输出请用 printf("%lld")