#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int n, k;
int f[2][(1 << 10) + 1];
int main() {
  cin >> n >> k;
  k--;
  f[0][0] = 1;
  int now = 1;
  for (int i = 1; i <= n; i++) {
    int x;
    cin >> x;
    fill(&f[now][0], &f[now][1 << k] + 1, 0);
    for (int j = 0; j <= 1 << k; j++) {
      if (x != 2)
        (f[now][j & 1 ? 2 : min(j + 2, 1 << k)] += f[now ^ 1][j]) %= mod;
      if (x != 4) (f[now][min(j + 1, 1 << k)] += f[now ^ 1][j]) %= mod;
    }
    now ^= 1;
  }
  cout << f[now ^ 1][1 << k];
  return 0;
}
