Thầy giáo Lê rất yêu thích các bài toán số học và dãy số. Thầy định nghĩa trọng số của một số nguyên dương ~X~ (ký hiệu là ~W(X)~) như sau:
-
Đầu tiên, thầy Lê biểu diễn ~X~ thành dãy các chữ số của nó trong hệ cơ số 10, thu được dãy ~X_1, X_2, ldots, X_N~ với ~N~ là số chữ số của ~X~;
-
Nếu dãy chữ số của ~X~ có chứa hai phần tử đứng cạnh nhau có tổng chia hết cho 5, nghĩa là tồn tại ~i in {1, 2, ldots, N – 1}~ sao cho ~(X_i + X_{i+1}) mod 5 = 0~, thì ~W(X) = 0~;
-
Ngược lại, ~W(X)~ chính là số lượng dãy con gồm các phần tử liên tiếp trong dãy chữ số của ~X~ mà có kết quả XOR các phần tử bằng 0. Cụ thể, ~W(X)~ là số lượng cặp ~(i, j)~ thoả mãn ~1 leq i leq j leq N~ và ~X_i oplus X_{i+1} oplus ldots oplus X_j = 0~, với ~oplus~ là phép toán XOR giữa hai số tự nhiên.
Nhắc lại, với hai số tự nhiên ~a~ và ~b~, phép toán ~a oplus b~ là phép toán XOR từng bit tương ứng của ~a~ và ~b~ trong biểu diễn hệ nhị phân của chúng.
Ví dụ:
-
~W(1234) = 0~ vì chứa hai chữ số 2 và 3 cạnh nhau có tổng chia hết cho 5;
-
~W(122103) = 5~ vì không có hai chữ số nào cạnh nhau có tổng chia hết cho 5, đồng thời dãy chữ số của nó có 5 dãy con gồm các phần tử liên tiếp là ~(2, 2)~, ~(1, 2, 2, 1)~, ~(1, 2, 2, 1, 0)~, ~(0)~ và ~(2, 1, 0, 3)~ có XOR các phần tử bằng 0;
-
~W(3456) = 0~ vì dãy chữ số của nó không có dãy con nào có XOR các phần tử bằng 0.
Yêu cầu: Cho số nguyên dương ~k~ và các số nguyên dương ~L, H~. Hãy tính tổng lũy thừa ~k~ của trọng số của tất cả các số nguyên dương nằm trong phạm vi ~[L, H]~, nghĩa là tính ~sum_{X=L}^H (W(X))^k~.
Input
Vào từ file văn bản PNUM.INP:
-
Dòng đầu chứa một số nguyên dương ~k~ là số lũy thừa trong tổng cần tính ~(1 leq k leq 2)~.
-
Dòng thứ hai chứa một số nguyên dương ~T~ là số lượng trường hợp test ~(1 leq T leq 50,000)~.
-
Mỗi dòng trong số ~T~ dòng tiếp theo chứa hai số nguyên dương ~L~ và ~H~ mô tả một trường hợp test ~(1 leq L leq H leq 10^{1000})~.
Dữ liệu bảo đảm tổng số chữ số của tất cả các số ~L~ và ~H~ trong một file dữ liệu vào không vượt quá ~10^5~. Các số trên cùng một dòng cách nhau bởi dấu cách.
Output
Ghi ra file văn bản PNUM.OUT:
- Gồm ~T~ dòng, mỗi dòng chứa một số nguyên là phần dư của kết quả tìm được trong phép chia cho ~1,000,000,007~ tương ứng với trường hợp test trong dữ liệu đầu vào.
Scoring
Subtask Điểm Giới hạn 1 ~12%~ ~T leq 10~ và ~H leq 10^6~ 2 ~12%~ ~T leq 10~; ~H leq 10^{18}~ và ~k = 1~ 3 ~12%~ ~H leq 10^{18}~ và ~k = 1~ 4 ~12%~ ~k = 1~ 5 ~20%~ ~T leq 10~; ~H leq 10^9~ và ~k = 2~ 6 ~16%~ ~L~ là luỹ thừa của 10; ~H = 10 times L – 1~ và ~k = 2~ 7 ~16%~ Không có ràng buộc nào thêm
Sample Input 1
1 3 1 10 100 105 111239 111245
Sample Output 1
1 5 12
Sample Input 2
2 3 1 10 100 105 111239 111245
Sample Output 2
1 7 30
Notes
Trong ví dụ thứ nhất:
-
Trường hợp test thứ nhất: ~W(1) = W(2) = W(3) = W(4) = W(5) = W(6) = W(7) = W(8) = W(9) = 0~, ~W(10) = 1~, nên kết quả là ~0^1 + 0^1 + 0^1 + 0^1 + 0^1 + 0^1 + 0^1 + 0^1 + 0^1 + 1^1 = 1~.
-
Trường hợp test thứ hai: ~W(100) = 0~, ~W(101) = 2~, ~W(102) = 1~, ~W(103) = 1~, ~W(104) = 1~, ~W(105) = 0~, nên kết quả là ~0^1 + 2^1 + 1^1 + 1^1 + 1^1 + 0^1 = 5~.
-
Trường hợp test thứ ba: ~W(111239) = 0~, ~W(111240) = 3~, ~W(111241) = 0~, ~W(111242) = 2~, ~W(111243) = 2~, ~W(111244) = 3~, ~W(111245) = 2~, nên kết quả là ~0^1 + 3^1 + 0^1 + 2^1 + 3^1 + 2^1 = 12~.
Trong ví dụ thứ hai:
-
Trường hợp test thứ nhất: Kết quả là ~0^2 + 0^2 + 0^2 + 0^2 + 0^2 + 0^2 + 0^2 + 0^2 + 0^2 + 1^2 = 1~.
-
Trường hợp test thứ hai: Kết quả là ~0^2 + 2^2 + 1^2 + 1^2 + 1^2 + 0^2 = 7~.
-
Trường hợp test thứ ba: Kết quả là ~0^2 + 3^2 + 0^2 + 2^2 + 3^2 + 2^2 = 30~.
