/* ID: Jang Lawrence PROG: runround LANG: C++ */ #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<queue> #define mp make_pair using namespace std; typedef long long lng; lng n; int a[9]; vector<lng> ans; void pushin(int cnt) { lng res=0,t=1; for(int i=cnt-1;i>=0;--i,t*=10) res+=(lng)a[i]*t; ans.push_back(res); } bool is(int cnt) { bool vis[9]={}; int now=0; while(1) { if(vis[now]) { if(now==0) { bool h=1; for(int i=0;i<cnt;++i) if(!vis[i]) h=0; if(h) pushin(cnt);return 1;} else return 0; } else vis[now]=1; now=(now+a[now])%cnt; } } int visit[10]; void dfs(int now,int cnt) { if(now==cnt) { is(cnt); return ; } for(int i=1;i<=9;++i) if(!visit[i]) { visit[i]=1; a[now]=i; dfs(now+1,cnt); visit[i]=0; } } int main() { #ifndef DEBUG freopen("runround.in","r",stdin); freopen("runround.out","w",stdout); #endif scanf("%lld",&n); for(int i=1;i<=9;++i) { memset(visit,0,sizeof(visit)); dfs(0,i); } int k=lower_bound(ans.begin(),ans.end(),n)-ans.begin(); if(ans[k]>n) printf("%lld\n",ans[k]); else printf("%lld\n",ans[k+1]); return 0; }