#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int str[101];
int dp[101][101][101];
long long num[51][51];
int n, m;
int b, w;
namespace MI {
void A(long long &a, long long b) {
  a += b;
  if (a >= mod) a -= mod;
}
long long qmul(long long a, long long b) {
  long long res = 0;
  while (b) {
    if (b & 1) A(res, a);
    A(a, a);
    b >>= 1;
  }
  return res;
}
long long qpow(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = qmul(res, a);
    a = qmul(a, a);
    b >>= 1;
  }
  return res;
}
};  // namespace MI
namespace Mat_pow {
struct Mat {
  long long m[101][101];
};
Mat a, e;
long long n, p;
Mat Mul(Mat x, Mat y) {
  Mat c;
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= n; j++) c.m[i][j] = 0;
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= n; j++)
      for (int k = 0; k <= n; k++)
        c.m[i][j] = c.m[i][j] % mod + x.m[i][k] * y.m[k][j] % mod;
  return c;
}
Mat pow(Mat x, long long y) {
  Mat ans = e;
  while (y) {
    if (y & 1) ans = Mul(ans, x);
    x = Mul(x, x);
    y >>= 1;
  }
  return ans;
}
void init() {
  for (int i = 0; i <= n; i++) {
    e.m[i][i] = 1;
  }
}
void print() {
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= n; j++) cout << a.m[i][j] << " ";
    cout << endl;
  }
}
void inp(int N, int mod) {
  n = N;
  p = mod;
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      a.m[i][j] = num[i][j];
    }
  }
  init();
}
long long func(long long k, int s) {
  a = pow(a, k);
  return a.m[0][s];
}
};  // namespace Mat_pow
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> str[i];
  }
  int s = 0;
  b = 0;
  w = 0;
  for (int i = 0; i < n; i++) {
    if (str[i] == 0)
      b++;
    else
      w++;
  }
  for (int i = 0; i < b; i++) {
    if (str[i] == 1) s++;
  }
  if (min(w, b) == 0) {
    cout << 1 << endl;
    return 0;
  }
  for (int i = 0; i <= min(w, b); i++) {
    if (i) num[i - 1][i] = i * i * 2, num[i][i] -= num[i - 1][i];
    if (i < min(w, b))
      num[i + 1][i] = (w - i) * (b - i) * 2, num[i][i] -= num[i + 1][i];
    num[i][i] += n * (n - 1);
  }
  Mat_pow::inp(min(w, b), mod);
  long long res = Mat_pow::func(m, s);
  cout << res * MI::qpow(MI::qpow(n * n - n, mod - 2), m) % mod << endl;
  return 0;
}
