#include <bits/stdc++.h>
using namespace std;
int n, m, mod;
char s[510][510];
long long dp[3][510][510];
int main() {
  while (cin >> n >> m >> mod) {
    memset(dp, 0, sizeof(dp));
    for (int i = 0; i < m; i++) {
      scanf("%s", &s[i]);
    }
    int a = 0, b = 0, c;
    for (int i = 0; i < n; i++) {
      c = 0;
      for (int j = 0; j < m; j++) {
        if (s[j][i] == '1') c++;
      }
      if (c == 0) a++;
      if (c == 1) b++;
    }
    dp[abs(m - 1) % 2][a][b] = 1;
    for (int i = m; i < n; i++) {
      for (int j = 0; j <= (n - i - 1); j++) {
        int k = ((n - i - 1) * 2 - j * 2);
        {
          if (k > 1)
            dp[i % 2][j][k] =
                (dp[abs(i - 1) % 2][j][k + 2] *
                     (((k + 1) * (k + 2) / 2) % mod) % mod +
                 dp[abs(i - 1) % 2][j + 2][k - 2] *
                     (((j + 1) * (j + 2)) / 2 % mod) % mod +
                 dp[abs(i - 1) % 2][j + 1][k] * (((j + 1) * k) % mod)) %
                mod;
          else
            dp[i % 2][j][k] =
                (dp[abs(i - 1) % 2][j][k + 2] * ((k + 1) * (k + 2) / 2 % mod) %
                     mod +
                 dp[abs(i - 1) % 2][j + 1][k] * ((j + 1) * k) % mod) %
                mod;
        }
      }
    }
    cout << dp[(n - 1) % 2][0][0] << endl;
  }
}
