Chiralitate

Time limit: 0.5s Memory limit: 16MB Input: Output:

Cerință

O echipă de chimiști români a descoperit un nou tip de moleculă pe care a numit-o polinucleoarena˘poli-nucleo-arenă. O arenă are un nucleu circular aromatic format din atomi de carbon, în schimb ce o polinucleoarena˘poli-nucleo-arenă are un număr nn de nuclei circulari concentrici, fiecare nucleu ii fiind format din m[i]m[i] atomi ce pot fi de k[i]k[i] tipuri. Din păcate, echipa s-a izbit de o mare problemă, aflarea numărului de polinucleoarenepoli-nucleo-arene distincte știind numărul de nuclei si descrierea fiecărui nucleu. Echipa de chimiști vă roagă pe voi să o ajutați.
Două polinucleoarenepoli-nucleo-arene XX și YY sunt considerate distincte dacă prin rotirea nucleilor polinucleoareneipoli-nucleo-arenei XX nu se poate ajunge la YY.

Date de intrare

Pe prima linie se găsește nn, numărul de nuclei. Pe fiecare dintre următoarele n linii se găsește câte o pereche de numere (m[i]m[i],k[i]k[i]), semnificând că nucleul ii este format din m[i]m[i] atomi ce pot fi de k[i]k[i] tipuri.

Date de ieșire

Pe prima linie se va găsi un singur număr întreg, reprezentând restul împărtirii numărului de polinucleoarenepoli-nucleo-arene distincte la 1e9+71e9+7.

Restricții și precizări

  • 1n 10001 \leq n \leq \ 1000
  • 1m[i],k[i]10 0001 \leq m[i], k[i] \leq 10 \ 000;
  • NUCLEII SE POT ROTI INDEPENDENT

Exemplul 1

stdin

2
2 2
2 2

stdout

9

Explicație

Un nucleu cu 2 atomi ce pot fi de 2 tipuri are 3 configurații: (0,0), (1,0), (1,1); După cum se poate vedea (1,0) si (0,1) reprezinta același nucleu. Cum sunt 2 nuclei inseamnă că rezultatul va fi 3*3, adică 9.

Exemplul 2

stdin

2
2 2
2 3

stdout

18

Explicație

Analog exemplului 1.

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