#4980. Problem 2. Lazy Sort

0

Problem 2. Lazy Sort

Problem 2. Lazy Sort

USACO 2025 US Open Contest, Platinum

Farmer John has NN cows (2N51062 \leq N \leq 5\cdot 10^6) and is attempting to get them to sort a non-negative integer array AA of length NN by relying on their laziness. He has a lot of heavy boxes so he lines the cows up one behind another, where cow i+1i+1 is behind cow ii, and gives aia_i boxes to cow ii (0ai0\le a_i).

Cows are inherently lazy so they always look to pass their work off to someone else. From cow 11 to N1N-1 in order, each cow looks to the cow behind them. If cow ii has strictly more boxes than cow i+1i+1, cow ii thinks this is "unfair" and gives one of its boxes to cow i+1i+1. This process repeats until every cow is satisfied.

Farmer John will then note the number of boxes bib_i that each cow ii is holding and create an array BB out of these values. If B=sorted(A)B = sorted(A), then Farmer John will be happy. Unfortunately, Farmer John forgot all but QQ values (2Qmin(N,100)2 \leq Q \leq \min(N, 100)) in AA. Luckily, those values include the number of boxes he was going to give to the first and last cow. Each value that FJ remembers is given in the form ci  vic_i \; v_i representing that aci=via_{c_i}=v_i (1ciN1 \leq c_i \leq N, 1vi1091\le v_i\le 10^9). Determine the number of different ways the missing values can be filled in so that he will be happy mod 109+710^9+7.

INPUT FORMAT (input arrives from the terminal / stdin):

The first line contains two space-separated integers NN and QQ representing the number of cows and queries respectively.

The next QQ lines contain two space separated integers ci  vic_i \; v_i representing that cow cic_i initially holds viv_i boxes. It is guaranteed that c1=1c_1 = 1, cQ=Nc_Q = N, and ci<ci+1c_i < c_{i+1} (the order of the cows is strictly increasing).

OUTPUT FORMAT (print output to the terminal / stdout):

Print the number of different ways modulo 109+710^9+7 that values aia_i can be assigned such that Farmer John will be happy after the cows perform the lazy sort. It is guaranteed that there will be at least one valid assignment.

SAMPLE INPUT:


3 2
1 3
3 2

SAMPLE OUTPUT:


2

In this example, FJ remembers the values at the ends of the array. The arrays [3,2,2][3,2,2] and [3,3,2][3,3,2] are the valid arrays that will make FJ happy at the end of the lazy sorting.

SAMPLE INPUT:


6 3
1 1
3 3
6 5

SAMPLE OUTPUT:


89

SCORING: Inputs 3-4: N,vi100N,v_i\le 100Inputs 5-6: N100N\le 100 and vi106v_i \leq 10^6Inputs 7-9: N2105N \leq 2\cdot 10^5 and vi106v_i \le 10^6Inputs 10-12: N2105N \leq 2\cdot 10^5Inputs 13-15: No additional constraints.

Problem credits: Suhas Nagar