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<>();
int currentSum = 0;
// 枚举所有前缀和
for (int i = 0; i < arr.length; i++) {
currentSum += arr[i]; // 累加当前的和
// 如果该和已经出现过,则返回2
if (sumSet.contains(currentSum)) {
return 2; // 存在两个子数组的和相等
}
sumSet.add(currentSum);
}
// 如果没有重复的和,返回1
return 1;
}
}
aW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwppbXBvcnQgamF2YS51dGlsLlNjYW5uZXI7CgpwdWJsaWMgY2xhc3MgTWFpbiB7CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFNjYW5uZXIgc2Nhbm5lciA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgaW50IG4gPSBzY2FubmVyLm5leHRJbnQoKTsgIC8vIOivu+WPluaVsOe7hOeahOWkp+WwjwogICAgICAgIGludFtdIGFyciA9IG5ldyBpbnRbbl07CiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgYXJyW2ldID0gc2Nhbm5lci5uZXh0SW50KCk7ICAvLyDor7vlj5bmlbDnu4TnmoTlhYPntKAKICAgICAgICB9CgogICAgICAgIC8vIOWIpOaWreaYr+WQpuWtmOWcqOS4pOS4quWtkOaVsOe7hOeahOWSjOebuOetiQogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihmaW5kU3Vic2V0U3VtKGFycikpOwogICAgfQoKICAgIC8vIOafpeaJvuaYr+WQpuWtmOWcqOS4pOS4quWtkOaVsOe7hOeahOWSjOebuOetiQogICAgcHVibGljIHN0YXRpYyBpbnQgZmluZFN1YnNldFN1bShpbnRbXSBhcnIpIHsKICAgICAgICBIYXNoU2V0PEludGVnZXI+IHN1bVNldCA9IG5ldyBIYXNoU2V0PD4oKTsKICAgICAgICBpbnQgY3VycmVudFN1bSA9IDA7CiAgICAgICAgCiAgICAgICAgLy8g5p6a5Li+5omA5pyJ5YmN57yA5ZKMCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgY3VycmVudFN1bSArPSBhcnJbaV07ICAvLyDntK/liqDlvZPliY3nmoTlkowKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIOWmguaenOivpeWSjOW3sue7j+WHuueOsOi/h++8jOWImei/lOWbnjIKICAgICAgICAgICAgaWYgKHN1bVNldC5jb250YWlucyhjdXJyZW50U3VtKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIDI7ICAvLyDlrZjlnKjkuKTkuKrlrZDmlbDnu4TnmoTlkoznm7jnrYkKICAgICAgICAgICAgfQogICAgICAgICAgICBzdW1TZXQuYWRkKGN1cnJlbnRTdW0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyDlpoLmnpzmsqHmnInph43lpI3nmoTlkozvvIzov5Tlm54xCiAgICAgICAgcmV0dXJuIDE7CiAgICB9Cn0K