Costin are o matrice pătratică A cu N linii (numerotate de sus în jos de la 1 la N) și N coloane (numerotate de la stânga la dreapta de la 1 la N). Inițial toate elementele matricei sunt egale cu 0. Asupra matricei A se va efectua o succesiune de M operații, de următoarele tipuri:
1 i1 j1 i2 j2 X– se adaugă valoareaXtuturor elementelor din submatricea cu colțul stânga-sus în(i1, j1)și colțul dreapta-jos în(i2, j2). Cu alte cuvinte, toate elementeleAi,jcui1 ≤ i ≤ i2șij1 ≤ j ≤ j2se adună cuX.2 K– matricea se va roti deKori cu90de grade spre stânga (vezi fig. 1, pentruK = 1).3– flip orizontal (prima linie devine ultima linie, a doua devine penultima ș.a.m.d. vezi fig. 2)4– flip vertical (prima coloană va deveni ultima coloană, a doua va deveni penultima, ș.a.m.d. – vezi fig. 3)

Cerința
Scrieți un program care, cunoscând N, precum și o succesiune de M operații, afișează matricea rezultată în urma efectuării în ordine a operațiilor din succesiune.
Date de intrare
Fișierul de intrare matrix.in conține pe prima linie numărul N, pe a doua linie numărul M, iar pe următoarele M linii cele M operații din succesiune, în forma descrisă în enunț, câte o operație pe o linie.
Date de ieșire
Fișierul de ieșire matrix.out va conține N linii, pe fiecare dintre acestea aflându-se N numere separate prin spațiu, ce descriu matricea rezultată după efectuarea operațiilor.
Restricții și precizări
1 ≤ N ≤ 1.5001 ≤ M ≤ 100.0001 ≤ X, K ≤ 1.000.000.000- Toate numerele din fișierul de intrare sunt naturale.
- Datorită dimensiunilor mari, nu au fost adăugate toate testele.
Exemplu:
matrix.in
3 5 1 2 2 3 3 2 2 2 1 1 2 3 3 1 3 4
matrix.out
1 1 0 1 3 2 1 3 2