만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Fancy Formulas

시간 제한2초메모리 제한512 MB

요약
소수 p와 a+b가 p로 나누어떨어지지 않는 순서쌍 (a,b)가 주어질 때, 한 순서쌍을 다른 순서쌍으로 바꾸는 최소 연산 횟수를 구하거나 불가능하면 -1을 출력한다.
난이도

어려움10점 중 8점

유형
수학, 정수론, 그래프, BFS
정답자
아직 제출이 없습니다

문제

소수 pp와 두 정수의 쌍 (a,b)(a, b)가 주어지며, a+ba+b는 pp로 나누어떨어지지 않는다. 한 번의 연산으로 다음 중 하나를 할 수 있다.

  • (a,b)(a, b)를 (2a mod p,(b+p−a) mod p)(2a \bmod p, (b+p-a) \bmod p)로 바꾼다.
  • (a,b)(a, b)를 ((a+p−b) mod p,2b mod p)((a+p-b) \bmod p, 2b \bmod p)로 바꾼다.

qq개의 질의에 답해야 한다. ii번째 질의에서는 쌍 (ai,bi)(a_i, b_i)를 쌍 (ci,di)(c_i, d_i)로 바꾸는 데 필요한 최소 연산 횟수를 구하거나, 불가능하다면 불가능함을 판정한다.

두 수의 순서는 중요하다. 예를 들어 p=3p = 3일 때 (1,2)(1, 2)와 (2,1)(2, 1) 사이의 거리는 00이 아니라 11이다.

입력

첫째 줄에 두 정수 pp와 qq가 주어진다 (2≤p≤109+72 \le p \le 10^9 + 7, pp는 소수, 1≤q≤1051 \le q \le 10^5). pp는 소수이고 qq는 답해야 하는 질의의 수이다.

다음 qq개 줄 중 ii번째 줄에 네 정수 aia_i, bib_i, cic_i, did_i가 주어진다 (0≤ai,bi,ci,di<p0 \le a_i, b_i, c_i, d_i < p이고 ai+bia_i+b_i는 pp로 나누어떨어지지 않는다).

출력

각 질의에 대해 (ai,bi)(a_i, b_i)를 (ci,di)(c_i, d_i)로 바꾸는 것이 불가능하면 −1-1을 출력한다. 그렇지 않으면 목표를 달성하는 데 필요한 최소 연산 횟수를 출력한다.

예제1

  1. 예제 1

    입력
    5 10
    2 1 3 0
    2 1 4 4
    1 3 4 0
    0 2 0 4
    3 3 1 2
    0 1 0 1
    0 3 0 3
    0 1 0 1
    1 2 4 4
    1 0 1 1
    
    예상 출력
    2
    1
    2
    -1
    -1
    0
    0
    0
    1
    -1