Có N số nguyên dương A1,A2,…,AN. Anna và Bruno luân phiên, Anna đi trước. Trong một lượt, người chơi chọn một chỉ số i rồi thay Ai bằng một ước dương nhỏ hơnAi.
Ví dụ, nếu Ai=12 thì có thể thay nó bằng 1,2,3,4 hoặc 6, nhưng không thể giữ nguyên 12. Người không thực hiện được nước đi sẽ thua. Hãy xác định người thắng nếu cả hai đều chơi tối ưu.
Input
Dòng đầu chứa số nguyên N.
Dòng thứ hai chứa N số nguyên A1,A2,…,AN.
Output
In Anna nếu Anna thắng; ngược lại in Bruno.
Constraints
1≤N≤105;
2≤Ai≤105 với mọi i.
Scoring
Subtask 1 (50% số điểm): N≤10 và Ai≤60.
Subtask 2 (50% số điểm): Không có giới hạn bổ sung.
Example
Test 1
Input
6
2 4 6 8 9 12
Output
Anna
Giải thích: Số thừa số nguyên tố tính cả số lần lặp của sáu số lần lượt là 1,2,2,3,2,3; xor của chúng bằng 3, nên Anna có chiến lược thắng.
Lời giải tóm tắt
Phân tích: Gọi Ω(x) là số thừa số nguyên tố của x, có tính số lần lặp. Mọi ước thực sự d có Ω(d)<Ω(x), và với mọi t từ 0 đến Ω(x)-1 luôn chọn được một ước có Ω=t. Vì vậy g(x)=mex{0,...,Ω(x)-1}=Ω(x). Các số là các trò chơi con độc lập.
Thuật toán: Sàng ước nguyên tố nhỏ nhất đến max A_i. Với mỗi số, chia lặp để đếm Ω(A_i) rồi xor các giá trị. In Anna khi xor khác 0.
Chứng minh đúng: Lập luận trên chứng minh Grundy của từng số bằng Ω. Định lý Sprague-Grundy cho Grundy toàn vị trí bằng xor các thành phần; vị trí thua đúng khi xor bằng 0.
Độ phức tạp:O(M log log M + ΣΩ(A_i)) thời gian và O(M) bộ nhớ, với M=max A_i.