小Why的商品归位
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

超市里一共有 n 个货架,m 个商品,一开始商品的位置是被打乱的,小Why需要将商品全部归位。
小Why在给货架编号后,实现了每个商品所在货架必然在其应在货架之前。
小Why决定手推购物车按编号顺序依次访问每个货架。在访问货架时,小Why可以执行以下两个操作任意多次:
\bullet 当购物车不为空时,将购物车中的一个商品放上货架。
\bullet 当货架不为空时,将货架上的一个商品放入购物车。
当小Why跑完一趟后,如果仍有商品没被归位,那么小Why会再次返回 1 号货架重复以上过程。
超市里的购物车同一时刻最多能放 k 个商品,且每个货架容量无限,请你告诉小Why至少需要跑多少趟才能将商品全部归位。

输入描述:

第一行包括三个整数 n,m,k \ (2 \leq n \leq 10^6 , 1\leq m,k\leq10^6),表示货架个数,商品个数和购物车容量。
接下来 m 行,每行有两个整数 st_{i},ed_{i} ( 1 \leq st_{i} < ed_{i} \leq n),表示第 i 个商品的所在货架和应在货架。

输出描述:

输出一个整数,表示最少需要的趟数。
示例1

输入

复制
3 3 1
1 2
1 3
2 3

输出

复制
2