#include #include using namespace std; using namespace atcoder; typedef long long int ll; typedef long double ld; typedef vector vi; typedef vector vl; typedef vector vvl; typedef vector vvvl; typedef vector vvvvl; typedef vector vb; typedef vector vvb; typedef vector vvvb; typedef vector vvvvb; typedef pair pl; typedef pair ppl; typedef pair pppl; typedef pair pppppl; #define rep(i,a,b) for(int i=(a);i<(b);i++) #define rrep(i,a,b) for(int i=(b)-1;i>=(a);i--) #define all(a) begin(a),end(a) #define sz(a) (int)(a).size() #define F first #define S second #define bs(A,x) binary_search(all(A),x) #define lb(A,x) (ll)(lower_bound(all(A),x)-A.begin()) #define ub(A,x) (ll)(upper_bound(all(A),x)-A.begin()) #define cou(A,x) (ll)(upper_bound(all(A),x)-lower_bound(all(A),x)) templateusing min_priority_queue=priority_queue,greater>; templatebool chmax(T&a,T b){if(abool chmin(T&a,T b){if(b vm; typedef vector vvm; typedef vector vvvm; typedef vector vvvvm; ostream&operator<<(ostream&os,mint a){os<>(istream&is,mint&a){int x;is>>x;a=mint(x);return is;} //*/ templateostream&operator<<(ostream&os,pairp){os<istream&operator>>(istream&is,pair&p){is>>p.F>>p.S;return is;} templateostream&operator<<(ostream&os,vectorv){rep(i,0,sz(v))os<istream&operator>>(istream&is,vector&v){for(T&in:v)is>>in;return is;} struct bigint{ bool neg; vectord; bigint(){neg=false;} bigint(__int128 x){ neg=(x<0); if(neg)x=-x; while(x>0){d.push_back(x%10);x/=10;} } int operator[](int k){return d[k];} int size(){return d.size();} }; bool operator==(bigint A,bigint B){return A.neg==B.neg&&A.d==B.d;} bool operator!=(bigint A,bigint B){return!(A==B);} bool operator<(bigint A,bigint B){ if(A.neg&&B.neg){A.neg=B.neg=false;return!(A=0;i--)if(A[i]!=B[i])return A[i](bigint A,bigint B){return B(N,0); for(int i=0;i=10)C.d[i+1]++,C.d[i]-=10; if(C.size()&&C[N-1]==0)C.d.pop_back(); return C; } bigint operator-(bigint A,bigint B){ if(B.neg)return A+(-B); if(A.neg)return-((-A)+B); if(A(N,0); for(int i=0;i divmod(bigint A, bigint B){ int N1 = A.size(); int N2 = B.size(); bigint Q; for (int i = N1 - N2; i >= 0; i--){ int q = 0; if (A.size() >= N2 + i){ N1 = A.size(); bigint C; C.d = vector(N1 - i); for (int j = 0; j < N1 - i; j++){ C.d[j] = A[i + j]; } for (int j = 1; j <= 9; j++){ if (B * j <= C){ q = j; } else { break; } } } Q.d.push_back(q); bigint B2 = B * q; int M = B2.size(); bigint B3; B3.d = vector(M + i, 0); for (int j = 0; j < M; j++){ B3.d[i + j] = B2[j]; } while (B3.size() >= 2 && B3.d.back() == 0){ B3.d.pop_back(); } A = A - B3; } if (Q.size() == 0){ Q.d.push_back(0); } reverse(Q.d.begin(), Q.d.end()); if (Q.size() >= 2 && Q.d.back() == 0){ Q.d.pop_back(); } return make_pair(Q, A); } bigint operator /(bigint A, bigint B){ return divmod(A, B).first; } bigint operator %(bigint A, bigint B){ return divmod(A, B).second; } int main(){ cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); bigint l=0,r=1; rep(i,0,100)r=r*10; r=r+1; while(l+1>c; if(c=='='){ if(m==0)cout<<"! 0"<