#include #include #include #include #include #include #include #include #include #include #include #include #define pb push_back #define rep(i, n) for (int i = 0; i < (n); i++) #define reps(i, n, s) for (int i = (s); i < (n); i++) #define rrep(i, n) for (int i = (n - 1); i >= 0; i--) #define rreps(i, n, s) for (int i = s; i >= n; i--) using ll = long long; using namespace std; constexpr long long MAX = 5100000; constexpr long long INF = 1LL << 60; constexpr int MOD = 1000000007; int main() { cin.tie(0); ios::sync_with_stdio(false); ll a, b; cin >> a >> b; a %= MOD; b %= MOD; ll odd_a, even_a, odd_b, even_b; if (a % 2 == 1) { odd_a = 2 * (ll)ceil(a / (double)2) % MOD; even_a = (2 * (ll)ceil((a - 1) / (double)2) % MOD + 1LL) % MOD; } else { odd_a = 2 * (a / 2) % MOD; even_a = (2 * (a / 2) % MOD + 1LL) % MOD; } if (b % 2 == 1) { odd_b = 2 * (ll)ceil(b / (double)2) % MOD; even_b = (2 * (ll)ceil((b - 1) / (double)2) % MOD + 1LL) % MOD; } else { odd_b = 2 * (b / 2) % MOD; even_b = (2 * (b / 2) % MOD + 1LL) % MOD; } ll res = (odd_a * odd_b) % MOD + (even_a * even_b) % MOD; res %= MOD; cout << res << endl; return 0; }