import numpy as np
import numpy.linalg as alg


def N(A) :
    return np.sqrt(np.trace(np.dot(A.T,A)))
    
L = [[x,y,z,t] for x in [-1,1] for y in [-1,1] for z in [-1,1] for t in [-1,1]]

M4 = [np.array([L1,L2,L3,L4]) for L1 in L for L2 in L for L3 in L for L4 in L]
H4 = []
for A in M4 :
    if N(np.dot(A,A.T)-4*np.eye(4)) == 0 :
        H4.append(A)

SH4 = []
for A in H4 :
    if N(A-A.T) == 0 :
        SH4.append(A)
        
# print(len(SH4))

T = []
M = []
for A in SH4 :
    t = np.trace(A)
    if t not in T :
        T.append(t)
        M.append(A)