아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

음식 조합 세기

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

요약
현재 나온 N개 메뉴가 매 끼니마다 번호가 1씩 밀려 순환할 때 등장하는 서로 다른 메뉴 개수를 구합니다.
난이도

보통10점 중 5점

유형
문자열 매칭, 배열, 수학
정답자
아직 제출이 없습니다

문제

구내식당에서는 모두 MM 가지 음식을 만들 수 있고, 각 음식에는 1번부터 MM번까지 번호가 붙어 있다.

직원은 끼니마다 구내식당이 그때 내놓은 NN 가지 음식 중 하나를 골라 먹는다. 구내식당이 끼니마다 내놓는 음식은 다음 규칙으로 정해진다.

지난 끼니에 KK번 음식을 내놓았다면 이번 끼니에는 K+1K+1번 음식을 내놓는다. 지난 끼니에 MM번 음식을 내놓았다면 이번 끼니에는 1번 음식을 내놓는다.

즉 끼니가 한 번 지날 때마다 내놓는 음식의 번호가 모두 1씩 밀리고, MM번 다음은 다시 1번이 된다. 끼니는 끝없이 이어지므로 이번 끼니의 조합을 계속 밀어서 얻을 수 있는 조합은 언젠가 모두 나온다.

새로 입사한 영희는 구내식당이 내놓는 음식 조합이 몇 가지인지 궁금해졌다. 이번 끼니에 나온 음식의 번호를 알려줄 테니, 서로 다른 음식 조합이 몇 가지인지 세어 보자. 음식 번호의 집합이 같으면 같은 조합으로 본다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. (1≤T≤201 \le T \le 20)

각 테스트 케이스의 첫 줄에 구내식당이 만들 수 있는 음식의 가짓수 MM과 한 끼니에 나오는 음식의 가짓수 NN이 주어진다. (1≤N≤M≤1061 \le N \le M \le 10^6)

다음 NN개의 줄에는 이번 끼니에 나온 음식의 번호 xix_i가 한 줄에 하나씩 주어진다. (1≤xi≤M1 \le x_i \le M) 번호는 모두 다르고 오름차순으로 정렬되어 있다.

모든 테스트 케이스의 MM을 더한 값은 10610^6을 넘지 않는다.

출력

각 테스트 케이스마다 서로 다른 음식 조합의 가짓수를 한 줄에 하나씩 출력한다.

예제4

  1. 예제 1

    입력
    2
    6 3
    1
    3
    5
    16 4
    1
    3
    9
    11
    
    예상 출력
    2
    8
    
  2. 예제 2

    입력
    1
    1 1
    1
    
    예상 출력
    1
    
  3. 예제 3

    입력
    1
    10 10
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    예상 출력
    1
    
  4. 예제 4

    입력
    1
    7 1
    4
    
    예상 출력
    7