#include <bits/stdc++.h>
using namespace std;
int mem[100005][2][2];
int n, m;
int dp(int pos, bool f, bool f2) {
  if (pos == m) return f2;
  if (mem[pos][f][f2] != -1) return mem[pos][f][f2];
  if (!f)
    mem[pos][f][f2] = dp(pos + 1, 1, f2);
  else
    mem[pos][f][f2] =
        (dp(pos + 1, 0, f2 | 1) + dp(pos + 1, 1, f2)) % 1000000007;
  return mem[pos][f][f2];
}
int main() {
  scanf("%d %d", &n, &m);
  memset(mem, -1, sizeof mem);
  int res = (2 * dp(0, 0, 1)) % 1000000007;
  swap(n, m);
  memset(mem, -1, sizeof mem);
  res += (2 * (dp(0, 0, 0))) % 1000000007;
  res %= 1000000007;
  printf("%d\n", res);
  return 0;
}
