#include <bits/stdc++.h>
using namespace std;
const long double Pi = acos(-1.0) * 2;
int x, y, n, m, mod;
char c[505][505];
long long f[3][505][505];
void add(long long &x, long long y) {
  x += y;
  while (x >= mod) x -= mod;
  if (x < 0) x += mod;
}
int main() {
  ios_base::sync_with_stdio(false);
  ;
  cin.tie(0);
  cin >> n >> m >> mod;
  for (int i = 1; i <= m; i++)
    for (int j = 1; j <= n; j++) {
      cin >> c[i][j];
      if (c[i][j] == '1') f[0][0][j]++;
    }
  for (int i = (1); i <= (n); i++) {
    if (f[0][0][i] == 0) x++;
    if (f[0][0][i] == 1) y++;
  }
  f[1][x][y] = 1 % mod;
  for (int cnt = (m + 1); cnt <= (n); cnt++) {
    for (int i = (0); i <= (n); i++)
      for (int j = (0); j <= (n); j++) {
        if (!f[1][i][j]) continue;
        int k;
        k = (i * (i - 1) / 2) % mod;
        if (i > 1) add(f[2][i - 2][j + 2], (f[1][i][j] * k) % mod);
        if (j > 1) k = (j * (j - 1) / 2) % mod;
        add(f[2][i][j - 2], (f[1][i][j] * k) % mod);
        k = (i * j) % mod;
        if (i > 0 && j > 0) add(f[2][i - 1][j], (f[1][i][j] * k) % mod);
      }
    for (int i = (0); i <= (n); i++)
      for (int j = (0); j <= (n); j++) f[1][i][j] = f[2][i][j], f[2][i][j] = 0;
  }
  cout << f[1][0][0];
}
