Одного разу Козаку Вусу довелось стежити за участю друга на олімпіаді зі спортивного програмування.
На олімпіаді $$$m$$$ задач, кожна з яких оцінюється цілим числом від $$$0$$$ до $$$100$$$. Якщо учасник здав задачу на $$$x$$$ балів в момент часу $$$t_0$$$, то в будь-який момент часу $$$t\ge t_0$$$ кількість балів за задачу буде не менша за $$$x$$$.
Козак Вус був зайнятий у той день, тому не зміг відстежувати результати друга. Тому він вирішив робити скріншоти екрана кожні $$$10$$$ хвилин олімпіади. Всього він зробив $$$n$$$ скріншотів. На кожному скріншоті видно, скільки балів має його друг у певний момент часу.
Нажаль, всі скріншоти перемішались в галереї Вуса. Ваша задача — визначити, чи порядок скріншотів в галереї можливий.
Перший рядок містить два цілі числа $$$n$$$, $$$m$$$ ($$$1\le n,m\le 3000$$$) — кількість скриншотів та кількість задач відповідно.
Кожен з наступних $$$n$$$ рядків містить $$$m$$$ цілих чисел $$$a_{ij}$$$ ($$$0\le a_{i,j}\le 100$$$) — кількість балів за задачу $$$j$$$ на $$$i$$$-у скриншоті.
Виведіть «Yes», якщо скриншоти в галереї йдуть в тому самому порядку, що й час відправки, та «No» в іншому випадку.
У цій задачі існують умовні блоки. Якщо ваше рішення буде працювати правильно для певних обмежень, то воно отримуватиме певну кількість балів. Зверніть увагу, що оцінювання й досі потестове.
6 515 0 0 0 015 30 0 0 015 70 0 0 015 70 0 0 10015 70 25 0 10015 70 25 0 100
Yes
2 397 0 02 100 100
No
У першому тесті в олімпіаді було $$$5$$$ задач та тривала $$$60$$$ хвилин. Відповідь «Yes» тому, що події могли відбуватись в такому порядку:
Одна з причин, чому в другому тесті відповідь «No» — за перші $$$10$$$ хвилин він здав першу задачу на $$$97$$$ балів, але за останні $$$10$$$ хвилин, в нього якимось чином $$$2$$$ бали, що не можливо.