울타리 칠하기

서로 겹치지 않는 구간들을 골라 n개 칸 중 최대한 많이 덮고, 칠해지지 않고 남는 칸 수를 구한다.

보통6정렬동적 계획법이분 탐색누적 합면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

nn개로 이루어진 울타리를 칠한다. 널에는 1번부터 nn번까지 번호가 붙어 있다. 페인트공 kk명이 각각 정해진 구간 하나를 칠하겠다고 나섰다. 그런데 이들은 서로를 싫어해서, 자기 구간이 다른 페인트공의 구간과 널 한 개라도 겹치면 칠하지 않는다.

구간이 서로 겹치지 않는 페인트공 집합을 골라서 칠하지 못한 널의 개수를 최소로 만들어야 한다. 예를 들어 울타리의 널이 8개이고 페인트공이 3명이며 각각 1번부터 3번, 2번부터 6번, 5번부터 8번을 칠하려 한다고 하자. 첫 번째와 세 번째 페인트공을 고르면 겹치는 구간이 없고, 칠하지 못한 널은 4번 하나뿐이다.

입력

입력은 테스트 케이스 하나로 이루어지며, 같은 프로그램이 서로 다른 입력으로 여러 번 실행될 수 있다. 첫째 줄에 널의 개수 nn과 페인트공의 수 kk가 주어진다 (1n10181 \le n \le 10^{18}, 1k2000001 \le k \le 200000). 다음 kk개 줄에는 각각 정수 aabb가 주어지며 (1abn1 \le a \le b \le n), 이 페인트공이 aa번부터 bb번까지의 널을 모두 칠하려 한다는 뜻이다.

출력

페인트공을 겹치지 않게 최적으로 골랐을 때 칠하지 못한 널의 최소 개수를 한 줄에 출력한다.