Graphen

Time limit: 1s Memory limit: 64MB Input: Output:

Cerință

Se dă un graf cu NN noduri si MM muchii. Fiecare nod are o valoare asociata viv_i.

Frumusețea unui graf este numărul de drumuri simple a.î valorile nodurilor să fie strict crescătoare (în ordinea parcurgerii).

Se dau QQ întrebări de tipul (X,YX, Y), dacă ar fi existat și muchia între nodul XX si nodul YY, care ar fi fost frumusețea grafului modulo 109+710^9+7?

Date de intrare

Pe prima linie se găsesc două numere întregi, NN și MM.
Pe următoarea linie se vor găsi valorile viv_i.
Pe următoarele MM linii se vor găsi numere de tipul (ui,vi)(u_i,v_i) cu proprietatea că există muchie între ele.
Pe următoarea linie va fi QQ.
Pe următoarele QQ linii se vor găsi întrebări de tipul XYX Y.

Date de ieșire

Se vor afișa QQ numere, răspunsul la fiecare întrebare.

Restricții și precizări

  • 1N1051 \leq N \leq 10^5
  • 1Mmin(N(N1)2,2105)1 \leq M \leq min(\frac{N \cdot (N-1)}{2},2*10^5)
  • 1vi1091 \leq v_i \leq 10^9
  • 1Q21051 \leq Q \leq 2*10^5
  • Se garantează că întrebările nu vor conține muchii deja existente în graf

Subtaskuri

  • Pentru 15p15p : N,Q10N,Q \leq10
  • Pentru alte 15p15p : Q=1Q = 1
  • Pentru alte 70p70p : Rezolvați problema

Exemplul 1

stdin

3 2
1 2 3
1 2
1 3
1
2 3

stdout

7

Explicație

Lanțurile cu valori strict crescătoare pentru prima întrebare sunt: (1)(1), (2)(2), (3)(3), (1,2)(1,2), (1,3)(1,3), (2,3)(2,3), (1,2,3)(1,2,3)

Log in or sign up to be able to send submissions!