def multiply(a, b, p): new_matrix = [[0]*2 for _ in range(2)] for i in range(2): for j in range(2): for k in range(2): new_matrix[i][j] += a[i][k] * b[k][j] new_matrix[i][j] %= p return new_matrix def matrix_pow(a, n, p): result = [[1, 0], [0, 1]] current = a while n > 0: if n % 2 == 1: result = multiply(result, current, p) current = multiply(current, current, p) n = n // 2 return result def find_min_n(A, B, p): visited = dict() current = A n = 1 while True: current = matrix_pow(A, n, p) if current == B: return n key = tuple(map(tuple, current)) if key in visited: return -1 visited[key] = n n += 1 if n > p**4: return -1 def main(): import sys input = sys.stdin.read().split() ptr = 0 p = int(input[ptr]) ptr +=1 A = [] for _ in range(2): row = list(map(int, input[ptr:ptr+2])) ptr +=2 A.append(row) B = [] for _ in range(2): row = list(map(int, input[ptr:ptr+2])) ptr +=2 B.append(row) min_n = find_min_n(A, B, p) print(min_n if min_n != -1 else -1) if __name__ == "__main__": main()