constint P = 1e9 + 7; inlinelonglongqpow(longlong a, longlong b) { longlong res = 1; while (b) { if (b & 1) res = res * a % P; b >>= 1; a = a * a % P; } return res; } intmain() { int n, m; scanf("%d%d", &n, &m); if (n > m) swap(n, m); if (n == 1) printf("%lld", qpow(2, m)); elseif (n == 2) printf("%lld", 4 * qpow(3, m - 1) % P); elseif (n == 3) printf("%lld", 112 * qpow(3, m - 3) % P); else { if (m == n) printf("%lld", (83 * qpow(8, n) % P + 5 * qpow(2, n + 7) % P) * 190104168 % P); else printf("%lld", (83 * qpow(8, n) % P + qpow(2, n + 8)) * qpow(3, m - n - 1) % P * 570312504 % P); } return0; }