Tetris 2D

Limit pamięci: 32 MB

Mały Jaś poznał ostatnio grę Tetris. W grze tej klocki o różnych kształtach opadają na platformę. Gra ta zainspirowała Jasia do zastanowienia się nad następującym problemem. Załóżmy że wszystkie klocki to prostokąty o wymiarach , gdzie to długość boku poziomego. Klocki mają opadać osobno, w pewnej ustalonej kolejności. Dany klocek opada, dopóki nie natrafi na przeszkodę w postaci platformy albo innego, już stojącego klocka, a wtedy się zatrzymuje (w pozycji, w jakiej opadał) i pozostaje na swoim miejscu do końca gry. Mając dane wymiary, kolejność opadania i tory lotu klocków gracz będzie musiał podać wysokość najwyżej położonego punktu w układzie powstałym po opadnięciu wszystkich klocków. Wszystkie klocki opadają pionowo w dół i nie obracają się w trakcie opadania.

Zadanie

Napisz program, który:

  • wczyta ze standardowego wejścia opisy kolejno opadających klocków,
  • wyznaczy najwyższy punkt układu klocków po zakończeniu ich opadania,
  • wypisze wynik na standardowe wyjście.

Wejście

W pierwszum wierszu wejścia znajdują się dwie liczby całkowite (), oznaczające odpowiednio: szerokość platformy oraz liczbę klocków, które na nią opadną. W następnych wierszach występują opisy kolejno opadających klocków.

Każdy opis klocka składa się z dwóch liczb całkowitych: (), reprezentujących klocek o szerokości . Wierzchołki rzutu klocka na platformę będą miały współrzędne: i .

Wyjście

W jedynym wierszu wyjścia należy wypisać wysokość najwyższego punktu w układzie klocków po zakończeniu ich opadania.

Przykład

Dla danych wejściowych:

8 5
3 1
2 6
1 4
4 3
5 0

poprawną odpowiedzią jest:

3

Rysunek ilustruje wygląd układu klocków po zakończeniu ich opadania. Kolory kolejno opadających klocków to: zielony, żółty, czerwony, niebieski, fioletowy.