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

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

생일

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

요약
양면에 숫자가 적힌 카드 n장이 주어질 때, 모든 구간 [l, r]에서 합이 k로 나누어떨어지지 않는 최대 합을 구하고 그 총합을 10^9+7로 나눈 나머지를 출력합니다.
난이도

어려움10점 중 8점

유형
누적 합, 스택, 해시맵, 수학
정답자
아직 제출이 없습니다

문제

보그단은 생일 선물로 "Subsegment sum"이라는 보드게임을 받았다. 이 게임은 양면 카드 nn장으로 이루어져 있다. 각 카드의 양면에는 정수가 하나씩 적혀 있다. 카드는 테이블 위에 왼쪽에서 오른쪽으로 한 줄로 놓이며, 왼쪽부터 1번에서 nn번까지 번호가 붙는다. 카드를 놓은 뒤에는 뒤집을 수 있지만, 자리를 바꿀 수는 없다.

플레이어는 과제를 받는다. 과제는 두 수 ll과 rr의 쌍이다. 과제를 받으면 플레이어는 번호가 ll부터 rr까지인 카드를 각각 한쪽 면이 위로 향하도록 놓는다. 목표는 ll번부터 rr번까지 카드의 윗면 수의 합을 최대로 만드는 것이다.

보그단은 최대 합을 구하는 것만으로는 재미가 없어서 게임을 더 어렵게 만들었다. 그는 수 kk를 정한다. ll번부터 rr번까지 카드의 과제를 풀 때, 윗면 수의 합이 kk로 나누어떨어지지 않으면서 가능한 한 크도록 카드의 면을 정한다. 그런 합을 만들 수 있으면 그 최대 합을 f(l,r)f(l, r)이라고 한다. 합이 kk로 나누어떨어지지 않도록 면을 고를 수 없으면 f(l,r)=0f(l,r)=0이다.

보그단은 모든 쌍 ll, rr에 대해 f(l,r)f(l, r)을 더한 값, 즉 ∑1≤l≤r≤nf(l,r)\sum_{1 \le l \le r \le n} f(l,r)을 구하려 한다. 이 합을 109+710^9+7로 나눈 나머지를 출력한다.

입력

첫 줄에 정수 nn과 kk가 주어진다 (1≤n≤5⋅1051 \le n \le 5 \cdot 10^5, 1≤k≤1091 \le k \le 10^9).

다음 nn개의 줄에는 각각 정수 aia_i와 bib_i가 주어진다 (1≤ai,bi≤1091 \le a_i, b_i \le 10^9). 이는 카드 ii의 양면에 적힌 수이다.

출력

답을 109+710^9+7로 나눈 나머지를 정수 하나로 출력한다.

예제2

  1. 예제 1

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

    입력
    5 5
    4 1
    4 2
    2 3
    2 4
    1 5
    
    예상 출력
    130