Hạo có một tập hợp \(N\) đoạn thẳng được vẽ trên trục số. Đoạn thứ \(i\) vẽ bắt đầu từ vị trí \(s_i\) vị trí \(t_i\). Đầu tiên Hạo lấy ra một đoạn bất kỳ trong số \(N\) đoạn này, tiếp theo anh ấy sẽ lấy một đoạn khác sao cho đoạn này nằm trong đoạn vừa lấy trước đó ... công việc này tiếp tục cho đến khi không thể lấy thêm. Hạo đang thắc mắc nếu mình lấy tối ưu nhất thì được tối đa bao nhiêu đoạn
Yêu cầu: Bạn cần viết chương trình nhận đầu vào là thông tin của \(N\) đoạn thẳng trên, xác định số lượng tối đa các đoạn được Hạo lấy ra là bao nhiêu. Biết rằng đoạn \([u,v]\) được coi là nằm trong đoạn \([x,y]\) nếu \(x \le u \le v \le y\)
Dữ liệu vào
- Dòng đầu tiên chứa một số nguyên \(N\) cho biết số lượng các đoạn thẳng trong tập hợp mà Hạo đã vẽ \((1 \le N \le 10^3)\)
- Mỗi \(N\) dòng tiếp theo có hai số nguyên \(s_i\) và \(t_i\) tương ứng với vị trí bắt đầu và kết thúc của đoạn thứ \(i\) \((1 \le s_i \le t_i \le 10^9)\)
Dữ liệu ra
- In ra một số nguyên duy nhất là số đoạn thẳng tối đa được Hạo lấy ra.
Input 1
4
1 6
1 2
2 6
3 4
Output 1
3
Nhận xét