#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int solve(const string& s, int mod) { int n = s.size(); long long ans = 0; long long tmp = 9; for(int i=1; i dp(4, 0); dp[2] = 1; for(int i=0; i<(n+1)/2; ++i){ vector nextDp(4, 0); for(int a=0; a<4; ++a){ for(int x=0; x<=9; ++x){ if(i == 0 && x == 0) continue; if((a & 2) && x > s[i] - '0') continue; int b = a; if(x < s[i] - '0') b &= ~2; if(x < s[n-1-i] - '0') b &= ~1; else if(x > s[n-1-i] - '0') b |= 1; nextDp[b] += dp[a]; nextDp[b] %= mod; } } dp.swap(nextDp); } for(int i=0; i<3; ++i){ ans += dp[i]; ans %= mod; } return ans; } int main() { string s; cin >> s; cout << solve(s, 1000000000) << endl << solve(s, 1000000007) << endl; return 0; }