#include using namespace std; typedef signed long long ll; #define _P(...) (void)printf(__VA_ARGS__) #define FOR(x,to) for(x=0;x<(to);x++) #define FORR(x,arr) for(auto& x:arr) #define FORR2(x,y,arr) for(auto& [x,y]:arr) #define ALL(a) (a.begin()),(a.end()) #define ZERO(a) memset(a,0,sizeof(a)) #define MINUS(a) memset(a,0xff,sizeof(a)) template bool chmax(T &a, const T &b) { if(a bool chmin(T &a, const T &b) { if(a>b){a=b;return 1;}return 0;} //------------------------------------------------------- int C[10]; int L; ll N; ll ret; ll p10[21]; int S[10][7]={ {1,1,1,1,1,1,0}, {0,1,1,0,0,0,0}, {1,1,0,1,1,0,1}, {1,1,1,1,0,0,1}, {0,1,1,0,0,1,1}, {1,0,1,1,0,1,1}, {1,0,1,1,1,1,1}, {1,1,1,0,0,0,0}, {1,1,1,1,1,1,1}, {1,1,1,1,0,1,1}, }; void hoge() { int seg[7]={}; int i,j,x,sum=0; FOR(i,10) { sum+=C[i]; FOR(j,7) seg[j]+=S[i][j]*C[i]; } if((seg[2]+seg[4])%2) return; int tar=(seg[2]+seg[4])/2; if(seg[3]>tar) { int mi=min(seg[3]-tar,C[9]); seg[3]-=mi; } if(seg[6]tar) { int mi=min(seg[0]-tar,C[6]); seg[0]-=mi; } if(seg[5]=N) { ret=min(ret,atoll(V.c_str())); break; } for(j=i+1;jNS[i]) { string V2=V; swap(V2[j],V2[i]); sort(V2.begin()+i+1,V2.end()); ll nv=atoll(V2.c_str()); if(nv>=N) ret=min(ret,nv); break; } } for(j=i;j=sum) break; } } void dfs(int cur,int sum) { if(sum>=20||cur==10) return; dfs(cur+1,sum); C[cur]++; sum++; if(sum==L||sum==L+1) hoge(); dfs(cur,sum); sum--; C[cur]--; } void solve() { int i,j,k,l,r,x,y; string s; p10[0]=1; FOR(i,20) p10[i+1]=p10[i]*10; cin>>N; string S=to_string(N); L=S.size(); ret=1LL<<62; dfs(0,0); cout<