#include #include #define llint long long #define mod 1000000007 using namespace std; llint modpow(llint a, llint n) { if(n == 0) return 1; if(n % 2){ return ((a%mod) * (modpow(a, n-1)%mod)) % mod; } else{ return modpow((a*a)%mod, n/2) % mod; } } llint comb(llint n) { n %= mod; llint ret = n*(n-1+mod)%mod; ret *= modpow(2, mod-2), ret %= mod; return ret; } llint h, w; vector pvec; bool prime[3000005]; vector vec[3000005]; llint dp[3000005]; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cin >> h >> w; llint ans = (h-1) * w % mod; ans += (w-1) * h % mod, ans %= mod;; for(int i = 2; i < 18000; i++){ if(prime[i]) continue; for(int j = 2*i; j <= 3000000; j += i) prime[j] = true; } for(int i = 2; i <= 3000000; i++) if(!prime[i]) pvec.push_back(i); for(int i = 0; i < pvec.size(); i++){ int p = pvec[i]; for(int j = 1; p*j <= w; j++) vec[p*j].push_back(p); } llint tmp = 0; for(int i = 1; i <= w; i++){ llint n = vec[i].size(), N = 1<