Problem ID:
ts10dl_23_4
Points:
2 (partial)
Time limit:
1.0s
Memory limit:
512M
Input:
stdin
Output:
stdout
Author:
Problem type
Tham gia hoạt động trại hè Toán học, bạn Minh được giáo viên hướng dẫn về phép toán chia lấy dư. Cụ thể như sau: Nếu cho trước hai số nguyên dương ~X~ và ~Y~ thì phép chia lây dư của ~X~ đối với ~Y~ ~(X~ ~\bmod~ ~Y)~ là số dự của phép chia X cho Y. Ví dụ: ~10~ ~\bmod~ ~3 = 1~ (vì ~10~ chia ~3~ có thương bằng ~3~ và số dư là ~1~). Với phép toán mới này, bạn Minh mong muốn được áp dụng vào những bài toán cụ thể. Bạn Phương thì đam mê những dãy số, hai bạn đã cùng nhau nghiên cứu bài toán thú vị liên quan đến phép chia lầy dư. Bài toán như sau:
- Cho một dãy số gồm ~N~ số nguyên dương ~a_1, a_2, ..., a_N~. Tìm tất cả các số nguyên dương ~K~ sao cho các phần tử trong dãy số khi chia cho ~K~ luôn có cùng số dư.
Yêu cầu
- Hãy viết chương trình tìm tất cả các số nguyên dương ~K~ lớn hơn ~1~ sao cho mọi phần tử trong dãy số khi chia cho ~K~ luôn có cùng số dư.
Dữ liệu
- Dòng thứ nhất chứa số nguyên ~N~ ~(2 \le N \le 100)~.
- Dòng thứ hai chứa dãy sô nguyên dương ~a_i~ ~(1 \le i \le N, 2 \le a_i \le 10^9)~ trên cùng một dòng, mỗi số cách nhau một khoảng trắng.
Kết quả
- Xuất ra màn hình một dòng gồm các số ~K~ theo thứ tự tăng dần sao cho tất cả các phần tử ~a_i~ trong dãy khi chia cho ~K~ đều có cùng số dư. Các số cách nhau một khoảng trắng. Nếu không tìm được số ~K~ thỏa mãn thì xuất kết quả là ~-1~.
Ví dụ
Dữ liệu
3
47 77 35
Kết quả
2 3 6
Giải thích
- Khi ~N = 3~, các số ~47, 77, 35~ khi chia cho ~2~ cùng dư ~1~, khi chia cho ~3~ cùng dư ~2~, khi chia cho ~6~ cùng dư ~5~.
Comments