Trong thế giới của những ẩn số và biểu tượng, có một dãy ký hiệu gọi là mảng ~A~ gồm ~N~ phần tử, được định danh bằng các số nguyên theo một trình tự mà nguồn gốc của nó đã bị lãng quên qua thời gian. Nhiệm vụ của bạn là tìm ra cách chia dãy số này thành ít nhất 2 mảnh ghép, mỗi mảnh gồm các phần tử liên tiếp, và các mảnh đều có số lượng phần tử bằng nhau và lớn hơn ~1~. Song, dưới lớp vỏ của yêu cầu đơn giản ấy ẩn chứa một điều khắc nghiệt: sự chênh lệch giữa các tổng số của mỗi mảnh phải được cân chỉnh đến mức tối thiểu, như thể mỗi mảnh đang cạnh tranh để chứng minh giá trị của chính mình.
Yêu cầu: Hãy phân tách mảng ~A~ thành cách mảnh nhỏ, sao cho sự chênh lệch lớn nhất giữa các tổng của mỗi mảnh là nhỏ nhất. Nếu có nhiều cách chia để đạt giá trị nhỏ nhất, hãy đưa ra một phương án bất kì.
Input
- Dòng đầu tiên: Gồm số nguyên dương ~N~ ~(N \leq 10^6)~.
- Dòng tiếp theo: Gồm ~N~ số nguyên của mảng ~A~ lần lượt là ~A_1, A_2, ..., A_N~ ~(|A_i| \leq 10^9)~.
Output
- Dòng đầu tiên: Gồm một số nguyên là sự chênh lệch nhỏ nhất.
- Dòng thứ hai: Gồm một số nguyên là số phần tử của mỗi mảnh ghép.
- Các dòng sau: Mỗi dòng gồm các phần tử thuộc của từng mảnh.
Sample Input
6
1 0 2 0 0 2
Sample Output
1
3
1 0 2
0 0 2
Notes
- Có hai cách chia thoả mãn đạt được sự chênh lệch nhỏ nhất là ~1~ lần lượt là:
- Cách ~1~: ~[1, 0]~, ~[2, 0]~ và ~[0, 2]~.
- Cách ~2~: ~[1, 0, 2]~ và ~[0, 0, 2]~.
- Bạn có thể chọn một trong hai cách trên đều thoả mãn yêu cầu bài toán.
Bình luận