public class Euler849 {
    static final int kMod = 1000000007;

    static int idx(int v, int s, int width) {
        return v * width + s;
    }

    static int FValue(int n) {
        int S = 2 * n * (n - 1);
        int V = 4 * (n - 1);
        int W = S + 1;
        int SZ = (V + 1) * W;

        int[] dp = new int[SZ];
        int[] ndp = new int[SZ];

        for (int v = 0; v <= V; ++v) {
            dp[idx(v, v, W)] = 1;
        }

        for (int i = 2; i <= n; ++i) {
            java.util.Arrays.fill(ndp, 0);
            int low = 2 * i * (i - 1);

            for (int t = 0; t <= S; ++t) {
                int run = 0;
                for (int v = 0; v <= V; ++v) {
                    run += dp[idx(v, t, W)];
                    if (run >= kMod)
                        run -= kMod;
                    int s = t + v;
                    if (s <= S && s >= low) {
                        ndp[idx(v, s, W)] = run;
                    }
                }
            }
            int[] temp = dp;
            dp = ndp;
            ndp = temp;
        }

        int ans = 0;
        for (int v = 0; v <= V; ++v) {
            ans += dp[idx(v, S, W)];
            if (ans >= kMod)
                ans -= kMod;
        }
        return ans;
    }

    public static String solve() {
        return Integer.toString(FValue(100));
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
