import sys, time, random from collections import deque, Counter, defaultdict input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) li = lambda: list(mi()) inf = 2 ** 63 - 1 n, mod = mi() A = [[v % mod for v in li()] for _ in range(n)] ppcnt = [0] * (1 << n) for i in range(1, 1<> i): cnt -= 1 if not(1 & (bit >> i)): if cnt % 2: dpsum[1][bit | (1 << i)] += dpsum[0][bit] * A[ppcnt[bit]][i] dpsum[0][bit | (1 << i)] += dpsum[1][bit] * A[ppcnt[bit]][i] else: dpsum[1][bit | (1 << i)] += dpsum[1][bit] * A[ppcnt[bit]][i] dpsum[0][bit | (1 << i)] += dpsum[0][bit] * A[ppcnt[bit]][i] dpsum[0][bit | (1 << i)] %= mod dpsum[1][bit | (1 << i)] %= mod print(dpsum[-1][-1])