#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int lint; typedef pair IP; typedef pair LLP; typedef pairCP; #define rep(i, n) for (int i = 0; i < n; i++) #define repr(i, n) for (int i = n; i >= 0; i--) #define sort(v) sort((v).begin(), (v).end()) #define reverse(v) reverse((v).begin(), (v).end()) #define upper(v,hoge) upper_bound(v.begin(),v.end(),hoge) #define lower(v,hoge) lower_bound(v.begin(),v.end(),hoge) #define llower(v,hoge) *lower_bound(v.begin(), v.end(), hoge) #define lupper(v,hoge) *upper_bound(v.begin(), v.end(), hoge) string bigmulti(string A, string B) { //A*Bを返す vectornum(10); num = { '0','1','2','3','4','5','6','7','8','9' }; if (A.size() > B.size()) { swap(A, B); } int a = A.size(); int b = B.size(); int size = a + b; reverse(A); reverse(B); vectorV(size, 0); for (int i = 0; i < a; i++) { for (int j = 0; j < b; j++) { V[i + j] += ((A[i] - '0') * (B[j] - '0')); } } rep(i, size - 1) { V[i + 1] += (V[i] / 10); V[i] %= 10; } reverse(V); int flag = false; string ret; for (int i = 0; i < size; i++) { if (V[i] == 0 && flag == false)continue; else { ret.push_back(num[V[i]]); flag = true; } } return ret; } int main() { string V, T; cin >> V >> T; V = V.substr(2, 4); string A = bigmulti(V, T); //cout << A << endl; if (A.size() <= 4) { cout << 0 << endl; return 0; } rep(i, A.size() - 4) { cout << A[i]; } cout << endl; }