import java.util.HashSet;
import java.util.Scanner;
public class Main {
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in); int n = scanner.nextInt(); // 读取数组的大小
int[] arr = new int[n];
// 读取数组的元素
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
// 判断是否存在两个子数组的和相等
System.
out.
println(findSubsetSum
(arr
)); }
// 查找是否存在两个子数组的和相等
public static int findSubsetSum(int[] arr) {
// 使用哈希集合存储每个子数组的和
HashSet<Integer> sumSet = new HashSet<>();
// 遍历所有可能的子数组
for (int i = 0; i < arr.length; i++) {
int currentSum = 0;
for (int j = i; j < arr.length; j++) {
currentSum += arr[j]; // 计算当前子数组的和
// 如果该和已经出现过,则说明存在两个子数组的和相等
if (sumSet.contains(currentSum)) {
return 2;
}
sumSet.add(currentSum); // 将当前子数组和添加到集合中
}
}
// 如果没有找到重复的和,则返回1
return 1;
}
}
aW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwppbXBvcnQgamF2YS51dGlsLlNjYW5uZXI7CgpwdWJsaWMgY2xhc3MgTWFpbiB7CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFNjYW5uZXIgc2Nhbm5lciA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgaW50IG4gPSBzY2FubmVyLm5leHRJbnQoKTsgIC8vIOivu+WPluaVsOe7hOeahOWkp+WwjwogICAgICAgIGludFtdIGFyciA9IG5ldyBpbnRbbl07CiAgICAgICAgCiAgICAgICAgLy8g6K+75Y+W5pWw57uE55qE5YWD57SgCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgYXJyW2ldID0gc2Nhbm5lci5uZXh0SW50KCk7CiAgICAgICAgfQoKICAgICAgICAvLyDliKTmlq3mmK/lkKblrZjlnKjkuKTkuKrlrZDmlbDnu4TnmoTlkoznm7jnrYkKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZmluZFN1YnNldFN1bShhcnIpKTsKICAgIH0KCiAgICAvLyDmn6Xmib7mmK/lkKblrZjlnKjkuKTkuKrlrZDmlbDnu4TnmoTlkoznm7jnrYkKICAgIHB1YmxpYyBzdGF0aWMgaW50IGZpbmRTdWJzZXRTdW0oaW50W10gYXJyKSB7CiAgICAgICAgLy8g5L2/55So5ZOI5biM6ZuG5ZCI5a2Y5YKo5q+P5Liq5a2Q5pWw57uE55qE5ZKMCiAgICAgICAgSGFzaFNldDxJbnRlZ2VyPiBzdW1TZXQgPSBuZXcgSGFzaFNldDw+KCk7CiAgICAgICAgCiAgICAgICAgLy8g6YGN5Y6G5omA5pyJ5Y+v6IO955qE5a2Q5pWw57uECiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaW50IGN1cnJlbnRTdW0gPSAwOwogICAgICAgICAgICBmb3IgKGludCBqID0gaTsgaiA8IGFyci5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgY3VycmVudFN1bSArPSBhcnJbal07ICAvLyDorqHnrpflvZPliY3lrZDmlbDnu4TnmoTlkowKCiAgICAgICAgICAgICAgICAvLyDlpoLmnpzor6Xlkozlt7Lnu4/lh7rnjrDov4fvvIzliJnor7TmmI7lrZjlnKjkuKTkuKrlrZDmlbDnu4TnmoTlkoznm7jnrYkKICAgICAgICAgICAgICAgIGlmIChzdW1TZXQuY29udGFpbnMoY3VycmVudFN1bSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgc3VtU2V0LmFkZChjdXJyZW50U3VtKTsgIC8vIOWwhuW9k+WJjeWtkOaVsOe7hOWSjOa3u+WKoOWIsOmbhuWQiOS4rQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIOWmguaenOayoeacieaJvuWIsOmHjeWkjeeahOWSjO+8jOWImei/lOWbnjEKICAgICAgICByZXR1cm4gMTsKICAgIH0KfQo=