Một đoạn $[l, r]$ là tập hợp tất cả các số thực lớn hơn hoặc bằng $l$ và nhỏ hơn hoặc bằng $r$.
Cho $N$ đoạn thẳng. Hãy viết chương trình giải quyết $Q$ truy vấn sau:
- Với mỗi cặp $l$ và $r$ được cho, có thể chọn một hoặc nhiều đoạn thẳng sao cho giao của chúng chính xác bằng $[l, r]$ hay không? Nếu có thể, cần chọn ít nhất bao nhiêu đoạn thẳng?
Dữ liệu vào
Dòng đầu tiên chứa số lượng đoạn thẳng $N$ ($1 \le N \le 300\,000$).
Từ dòng tiếp theo, $N$ dòng sau, mỗi dòng chứa hai số nguyên $l_i$ và $r_i$ cách nhau bởi dấu cách, biểu diễn đoạn $[l_i, r_i]$ ($0 \le l_i < r_i \le 10^6$).
Dòng tiếp theo chứa số lượng truy vấn $Q$ ($1 \le Q \le 300\,000$).
Từ dòng tiếp theo, $Q$ dòng sau, mỗi dòng chứa hai số nguyên $l$ và $r$ cách nhau bởi dấu cách, biểu diễn truy vấn ($0 \le l < r \le 10^6$).
Dữ liệu ra
Với mỗi truy vấn, in ra trên một dòng kết quả. Nếu không thể tạo ra giao của các đoạn thẳng chính xác bằng $[l, r]$, in ra $-1$. Nếu có thể, in ra số lượng đoạn thẳng tối thiểu cần chọn.
Ví dụ
Dữ liệu vào 1
3 0 10 2 6 4 8 3 4 6 2 8 1 9
Dữ liệu ra 1
2 -1 -1