#include #include using namespace std; size_t readstring(char *s) { size_t ptr = 0; int c; for(;;) { c = getchar(); switch(c) { case 10: break; default: goto str; } } str: for(;;) { switch(c) { case 10: s[ptr] = '\0'; return ptr; default: s[ptr++] = static_cast(c); } c = getchar(); } } string plus1(const string &s) { string t = "0" + s; int N = static_cast(t.size()); for(int i=N-1; i>=0; --i) { if(t[i] == '9') { t[i] = '0'; } else { ++t[i]; break; } } if(t[0] == '0') { t.erase(0, 1); } return t; } string doit(const string &s) { int n = static_cast(s.size()); // [lo, hi] をインクリメントする int lo = -1, hi = -1; for(int i=n-1; i>=0; --i) { if('0' <= s[i] && s[i] <= '9') { hi = i; break; } } if(hi == -1) { return s; } for(int i=hi; i>=0; --i) { if('0' <= s[i] && s[i] <= '9') { lo = i; } else { break; } } string r, t; for(int i=0; i