#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define vt vector
#define pb push_back
#define mp make_pair
#define rep(i, n) for (int i = 0; i < n; i++)
#define maxs(x, y) (x = max(x, y))
#define mins(x, y) (x = min(x, y))
const int64_t MOD = 1000000007;

// 🚩
// 20201115 21:24~
//
int main()
{
    ll H, W;
    cin >> H >> W;
    vt<string> S(H);
    rep(y, H) cin >> S.at(y);

    vt<vt<ll>> dp(H, vt<ll>(W, 0));
    dp.at(0).at(0) = 1;

    vt<vt<ll>> X(H, vt<ll>(W)), Y(H, vt<ll>(W)), Z(H, vt<ll>(W));

    for (ll cy = 0; cy < H; cy++)
    {
        for (ll cx = 0; cx < W; cx++)
        {
            if (cx == 0 && cy == 0) continue;
            if (S.at(cy).at(cx) == '#') continue;

            // o(4*10^6)
            if (cx > 0) X.at(cy).at(cx) = (X.at(cy).at(cx - 1) + dp.at(cy).at(cx - 1)) % MOD;
            if (cy > 0) Y.at(cy).at(cx) = (Y.at(cy - 1).at(cx) + dp.at(cy - 1).at(cx)) % MOD;
            if (cx > 0 && cy > 0) Z.at(cy).at(cx) = (Z.at(cy - 1).at(cx - 1) + dp.at(cy - 1).at(cx - 1)) % MOD;
            dp.at(cy).at(cx) = (X.at(cy).at(cx) + Y.at(cy).at(cx) + Z.at(cy).at(cx)) % MOD;
            // //右
            // for (ll i = 1; i <= W - 1 - cx; i++)
            // {
            //     if (S.at(cy).at(cx + i) == '#') break;
            //     dp.at(cy).at(cx + i) = (dp.at(cy).at(cx + i) + dp.at(cy).at(cx)) % MOD;
            // }
            // //右下
            // for (ll i = 1; i <= min(H - 1 - cy, W - 1 - cx); i++)
            // {
            //     if (S.at(cy + i).at(cx + i) == '#') break;
            //     dp.at(cy + i).at(cx + i) = (dp.at(cy + i).at(cx + i) + dp.at(cy).at(cx)) % MOD;
            // }
            // //下
            // for (ll i = 1; i <= H - 1 - cy; i++)
            // {
            //     if (S.at(cy + i).at(cx) == '#') break;
            //     dp.at(cy + i).at(cx) = (dp.at(cy + i).at(cx) + dp.at(cy).at(cx)) % MOD;
            // }
        }
    }
    cout << dp.at(H - 1).at(W - 1) << endl;
}

#include <bits/stdc++.h>
// #include <atcoder/all>
// using namespace atcoder;

using namespace std;
using ll = long long;
int f(int N, int K) {
    if (K < 2 || K > 2 * N) return 0;
    return min(K - 1, 2 * N + 1 - K);
}

int main() {
    ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int N;
    cin >> N;
    int K;
    cin >> K;

    ll output = 0LL;
    for (int ab = 2; ab <= 2 * N; ab++) {
        output = output + (ll)f(N, ab) * f(N, ab - K);
    }
    cout << output << endl;

    return 0;
}
