#include using namespace std; template class Array : public vector { public: using vector::vector; using vector::begin; using vector::end; using vector::push_back; template Array map(function f) { Array res(end() - begin()); for (auto it = begin(); it != end(); ++it) res[it - begin()] = f(*it); return res; } Array select(function f) { Array res; for (auto it = begin(); it != end(); ++it) if (f(*it)) res.push_back(*it); return res; } template R reduce(R u, function f) { for (auto it = begin(); it != end(); ++it) u = f(u, *it); return u; } template Array> zip(const Array &b) { assert(end() - begin() == b.end() - b.begin()); Array> res; for (auto it = begin(); it != end(); ++it) res.push_back({*it, b[it - begin()]}); return res; } Array iota(T st) { Array res(end() - begin()); ::iota(res.begin(), res.end(), st); return res; } Array slice(int st, size_t len) { auto it = (st < 0 ? end() : begin()) + st; return Array(it, it + len); } void inspect() { if (begin() == end()) return void(cout << endl); copy(begin(), prev(end()), ostream_iterator(cout, ", ")); cout << *prev(end()) << endl; } }; signed main() { ios::sync_with_stdio(false); int A, B; cin >> A >> B; auto is_easy = [](int x) { if (x % 100 || x == 0) return false; while (x % 10 == 0) x /= 10; return x < 10; }; if (is_easy(abs(A)) && is_easy(abs(B))) { cout << 1LL * A * B / 10 << endl; } else { int64_t res = 1LL * A * B; if (abs(res) < 1e8) cout << res << endl; else cout << "E" << endl; } return 0; }