#include #include #include using namespace std; typedef long long lint; typedef vectorvi; typedef pairpii; #define rep(i,n)for(int i=0;i<(int)(n);++i) vi mul3(const vi &t){ int n=t.size(); vi ret(n); int car=0; rep(i,n){ car=car+t[i]*3; ret[i]=car%10; car/=10; } if(car!=0)ret.push_back(car); return ret; } vi add(const vi &t, int k){ int n=t.size(); vi ret(n); int car=0; rep(i,n){ car=car+t[i]; if(i==0)car+=k; ret[i]=car%10; car/=10; } if(car!=0)ret.push_back(car); return ret; } vi to_vi(const string &s){ vi d; rep(i,s.length())d.push_back(s[i]-'0'); reverse(d.begin(),d.end()); return d; } void fail(){ cout<<"No"<>p; vi t=to_vi(p); t=mul3(t); t=add(t,4); if(0){ for(auto d:t)cerr<<" "<6)ok=0; } if(!ok)fail(); succ(); } if(t[t.size()-1]==2){ bool ok=1; int pos=-1; rep(i,t.size()-1){ if(i==0)continue; if(t[i]%3==2){ if(pos==-1){ pos=i; }else{ fail(); } } if(t[i]%3==1||t[i]==9)fail(); } if(pos==-1)fail(); rep(i,t.size()-2){ int v=t[i]/3; if(i2)fail(); }else{ if(v>1)fail(); } } succ(); } fail(); }