Оля та площина
Дівчинка Оля - яскравий приклад ідеальної людини: вона щодня розв'язує задачі. Проте займатися вдома майже неможливо, адже там живе її кіт-бешкетник Костянтин, який за будь-якої нагоди щось та натворить. Тож коли Олі подарували на день народження величезний шматок білої декартової площини для нотаток, Костянтин відразу замислив зіпсувати чудовий подарунок.
Площина має вигляд білого квадрату, лівий нижній кут якої має координати (0, 0), а верхній правий - (N, N). Для зручності дівчинка поставила у кожен кут площини (тобто у точки (0, 0), (N, 0), (0, N), (N, N)) по плящці з чорнилами та сіла писати складний контест.
Поки Оля пише чергову задачу, Костянтин може підійти та «випадково» перекинути будь-яку пляшку з чорнилами, і прямокутна ділянка, протилежні кути якої знаходяться у точці де стоїть пляшка та точці (x, y) на площині, буде безнадійно зіпсована і вся перефарбується в чорний колір. Оля, звісно, трохи покричить, але що робити - доведеться знову наповнити пляшку з чорнилами і продовжувати писати змагання. При цьому Костянтин знову зможе перекинути чорнила, пофарбувавши уже іншу ділянку площини.
Іноді, коли Оля зустрічає особливо складну задачу, вона вирішує занотувати свої думки стосовно неї на деякій частині своєї площини. Для нотування вона завжди обирає ділянку, що являє собою прямокутник, паралельний осям координат. Звісно, Олі необхідна інформація про те, яка площа обраної ділянки вкрита чорнилами. Оскільки дівчинка дуже зайнята розв'язуванням задач на контесті, Вам доведеться допомогти їй.
####Завдання
Напишіть програму, яка за інформацією про події, що вібулись під час контесту, буде допомагати Олі знаходити площу зафарбованої частини площини.
Вхідні дані
У першому рядку вхідного файлу містяться два числа цілих N та Q (1 ≤ N,Q ≤ 10^5
), які задають розмір площини та кількість подій, що відбулись під час контесту відповідно.
Далі йдуть Q рядків, що описують події. Кожен рядок починається числом t, яке описує тип події. Якщо 1 ≤ t ≤ 4, це означає що Костянтин перекинув відповідну пляшку з чорнилами. У такому випадку далі йдуть два числа x та y (0 ≤ x,y ≤ N), які задають протилежний кут ділянки, котра буде перефарбована в чорний колір.
Перша пляшка з чорнилами знаходиться в лівому нижньому, друга - в правому нижньому, третя - в лівому верхньому, а четверта пляшка - в правому верхньому кутах.
Якщо ж t дорівнює 0, далі йдуть 4 цілих числа x[1]
, y1
, x2
, y2
, (0 ≤ x1 < x2 ≤ N, 0 ≤ y1 < y2 ≤ N)
- Оля обирає прямокутну ділянку, паралельну осям координат з протилежними кутами в точках (x1, y1)
та (x2, y2)
.
Гарантується, що у вхідному файлі міститься хоча б одна подія типу 0, а кіт фарбує прямокутники з ненульовою площею.
Вихідні дані
У вихідний файл для кожного запиту типу 0 виведіть у окремому рядку єдине ціле число - площу зіпсованої котом частини відповідної ділянки площини. Відповіді на запити виведіть у тому ж порядку, в якому вони задані у вхідних даних.
####Оцінювання
Пiдзадача Бали Додатковi обмеження Необхідні підзадачі
0 0 Тести з умови -
1 5 1 ≤ N,Q ≤ 100 0
2 6 1 ≤ N,Q ≤ 1000, t ∈ {0, 1, 2} -
3 8 1 ≤ N,Q ≤ 1000 0, 1, 2
4 14 1 ≤ N,Q ≤ 50000, кiлькiсть запитiв нульового типу не бiльше 20 0
5 12 1 ≤ N,Q ≤ 50000, t ∈ {0, 1}, для усіх запитів першого типу -виконується умова: якщо запит a йде пізніше запиту b, тоxa ≤ xb, ya ≥ yb
6 8 1 ≤ N,Q ≤ 50000, t ∈ {0, 1} -
7 10 1 ≤ N,Q ≤ 50000, t ∈ {0, 1, 2} 2, 5, 6
8 13 1 ≤ N,Q ≤ 50000 0, 1, 2, 3, 4, 5, 6, 7
9 9 t ∈ {0, 1} 5, 6
10 8 t ∈ {0, 1, 2} 2, 5, 6, 7, 9
11 7 Без додаткових обмежень 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10