#include /* #include using namespace atcoder; using mint = modint1000000007; */ //g++ -I/opt/ac-library ./**.cpp using namespace std; using ll = long long; using ull = unsigned long long; const long long MOD = 1000000007; const long double PI = 3.14159265358979; const long long INF = 1LL<<60; template bool chmax(T &a, const T& b){if(a < b){a = b;return true;}return false;} template bool chmin(T &a, const T& b){if(a > b){a = b;return true;}return false;} ll gcd(ll a, ll b){if (b == 0) return a;else return gcd(b, a % b);} ll lcm(ll x,ll y){return ll(x/gcd(x,y))*y;} template using min_priority_queue = priority_queue, greater>; #define int long long int32_t main() { int a, b; cin >> a >> b; int ans = 0; ans += (((a + a%2)%MOD) * ((b + (b%2))%MOD)) % MOD; ans += (((a + !(a%2))%MOD) * ((b + !(b%2))%MOD)) % MOD; cout << ans % MOD << endl; }