1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
def permutacje(lista):
    wynik = [lista]
    for i in range(len(lista) - 1):
        lista = lista[1:] + [lista[0]]
        wynik.append(lista)
    return wynik
def kongruencja_modulo(x):
    y = 1000000008 // x
    if (y * x) % 1000000007 == 1:
        return y
    else:
        return -(-1000000008 // x)
def inwersje(lista):
    wynik = 0
    for i in range(len(lista)):
        for j in range(1,len(lista)):
            if lista[i] > lista[j] and i < j:
                wynik += 1
    return wynik
def NWD(a, b):
    while b != 0:
        a, b = b, a % b
    return a
def sprawdzanie_p_q(p,q):
    while NWD(p,q) != 1:
        x = NWD(p,q)
        p, q = p // x, q // x
    return p,q
n = list(map(int, input("").split()))
p = 0
q = 0
for i in range(n[1]):
    permu = permutacje(list(map(int, input("").split())))
    q += len(permu)
    for j in permu:
        p += inwersje(j)
p, q = sprawdzanie_p_q(p,q)
z = kongruencja_modulo(q) * p
print(z % 1000000007)