F. Почти перестановка
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Недавно Иван заметил массив a во время отладки одной программы. Сейчас Иван не может вспомнить этот массив полностью, но ему хотелось бы его восстановить, так как устранить баг до сих пор не получается, но, возможно, тот массив может помочь в устранении.

Иван прекрасно помнит, что в массиве было n элементов, и каждый из них был не меньше 1 и не больше n. Также он помнит q фактов про массив. Существуют два типа фактов, которые помнит Иван:

  • 1 li ri vi — для каждого x, такого, что li ≤ x ≤ ri, ax ≥ vi;
  • 2 li ri vi — для каждого x, такого, что li ≤ x ≤ ri, ax ≤ vi.

Также Иван считает, что этот массив был перестановкой, но в этом Иван совсем не уверен. Он хочет восстановить такой массив, который бы соответствовал q фактам, в которых Иван точно уверен, и был бы похож на перестановку. Формально, Иван определил стоимость (cost) массива как:

, где cnt(i) равно количеству вхождений i в массив.

Помогите Ивану определить минимально возможную величину cost массива, который бы соответствовал заданным фактам!

Входные данные

В первой строке заданы два числа n и q (1 ≤ n ≤ 50, 0 ≤ q ≤ 100).

Затем следуют q строк, каждая из которых обозначает один из фактов о массиве. В i-й строке записаны четыре целых числа ti, li, ri и vi для i-го факта (1 ≤ ti ≤ 2, 1 ≤ li ≤ ri ≤ n, 1 ≤ vi ≤ n, ti обозначает тип факта).

Выходные данные

Если факты противоречат друг другу и не существует массива, который бы им соответствовал, выведите -1. Иначе выведите минимально возможное значение величины cost.

Примеры
Входные данные
3 0
Выходные данные
3
Входные данные
3 1
1 1 3 2
Выходные данные
5
Входные данные
3 2
1 1 3 2
2 1 3 2
Выходные данные
9
Входные данные
3 2
1 1 3 2
2 1 3 1
Выходные данные
-1