#include #define M 20 const int mod = 1000000007; int dp[2][M][M]; const int T[M][M] = { {1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 4, 5, 3, 4, 3, 6, 0, 0}, {0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 2, 3, 4, 0, 0, 0, 5, 0, 1}, {0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 3, 2, 3, 3, 4, 0, 0, 0, 2}, {0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 4, 3, 2, 4, 3, 4, 0, 5, 3}, {0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 3, 4, 2, 3, 0, 0, 0, 1}, {0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 4, 3, 3, 2, 3, 0, 0, 2}, {0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 4, 0, 3, 2, 5, 0, 1}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0}, {0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 3, 0, 0, 0, 0, 3, 0, 4, 2}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, }; void mult(const int A[M][M], const int B[M][M], int C[M][M]){ int i, j, k; for(i=0;i