만드는 중입니다

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

레페제

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

요약
볼록 다각형의 삼각분할에서 대각선을 뒤집는 연산을 반복할 때, 정점 x의 부채꼴 분할까지 필요한 최소 연산 수와 최단 순서의 개수를 구합니다.
난이도

어려움10점 중 9점

유형
조합론, 트리, 동적 계획법
정답자
아직 제출이 없습니다

문제

꼬마 프란은 정다각형 모양의 나무 틀을 선물로 받았다. 다각형의 꼭짓점이 nn개이므로, 가능한 대각선마다 하나씩 맞는 나무 막대 n(n−3)2\frac{n(n-3)}{2}개도 함께 받았다. 꼭짓점에는 반시계 방향으로 1부터 nn까지 번호가 붙어 있다.

프란은 처음에 틀 안에 막대 n−3n-3개를 놓았다. 각 막대는 이웃하지 않은 두 꼭짓점을 잇고, 어떤 두 막대도 서로 교차하지 않는다. 즉, 막대들이 삼각분할을 이룬다.

프란은 다음 두 단계로 이루어진 연산으로 이 배치를 바꾸며 논다.

  1. 막대 하나를 제거한다.
  2. 새 막대를 하나 추가해서 새로운 삼각분할을 만든다.

연산은 순서쌍 ((a,b),(c,d))((a, b),(c, d))로 나타낸다. 이는 꼭짓점 aa와 bb를 잇는 막대를 제거하고, 꼭짓점 cc와 dd를 잇는 막대를 추가했다는 뜻이다.

프란은 현재 삼각분할을 꼭짓점 xx에 대한 부채 삼각분할로 바꾸려면 연산이 몇 번 필요한지, 그리고 그렇게 하는 방법이 몇 가지인지 궁금해한다. 꼭짓점 xx에 대한 부채 삼각분할은 모든 대각선이 공통 끝점 xx를 갖는 삼각분할이다.

필요한 최소 연산 횟수를 mm이라고 하자. mm번의 연산으로 목표 분할에 도달하는 연산 수열 f1,f2,…,fmf_1, f_2, \dots, f_m과 s1,s2,…,sms_1, s_2, \dots, s_m을 생각한다. 어떤 인덱스 ii에 대해 fi≠sif_i \ne s_i이면 두 수열은 다르다. 이런 수열의 개수를 109+710^9 + 7로 나눈 나머지로 구한다.

입력

첫 줄에 꼭짓점 수 nn과 이벤트 수 qq가 주어진다 (4≤n≤2⋅1054 \le n \le 2 \cdot 10^5, 1≤q≤2⋅1051 \le q \le 2 \cdot 10^5).

다음 n−3n-3개 줄에는 ii번째 막대가 잇는 꼭짓점 번호 xix_i와 yiy_i가 주어진다 (1≤xi,yi≤n1 \le x_i, y_i \le n).

다음 qq개 줄은 이벤트 종류 tit_i (1≤ti≤21 \le t_i \le 2)로 시작한다. ti=1t_i = 1이면 정수 ai,bi,ci,dia_i, b_i, c_i, d_i (1≤ai,bi,ci,di≤n1 \le a_i, b_i, c_i, d_i \le n)가 이어지며, 그 시점에 연산 ((ai,bi),(ci,di))((a_i, b_i),(c_i, d_i))를 수행한다. 이 연산은 가능한 연산임이 보장된다. ti=2t_i = 2이면 정수 xix_i (1≤xi≤n1 \le x_i \le n)가 이어지며, 현재 삼각분할에 대해 꼭짓점 xix_i에 대한 부채 삼각분할의 정보를 구한다.

출력

ti=2t_i = 2인 이벤트마다 입력 순서대로 한 줄에 두 정수를 출력한다. 첫 번째는 필요한 최소 연산 횟수이고, 두 번째는 그 횟수로 목표 삼각분할에 도달하는 방법의 수를 109+710^9 + 7로 나눈 나머지이다.

예제3

  1. 예제 1

    입력
    4 3
    1 3
    2 1
    1 1 3 2 4
    2 1
    
    예상 출력
    0 1
    1 1
    
  2. 예제 2

    입력
    5 4
    1 3
    3 5
    2 1
    2 2
    1 1 3 2 5
    2 2
    
    예상 출력
    1 1
    2 1
    1 1
    
  3. 예제 3

    입력
    9 3
    1 5
    1 7
    2 4
    2 5
    5 7
    7 9
    2 1
    1 2 5 1 4
    2 1
    
    예상 출력
    4 12
    3 6