import java.util.Scanner;
import java.util.HashMap;
import java.util.Map;
class SubarrayLengthFinder {
public static void main
(String[] args
) { Scanner sc
= new Scanner
(System.
in); int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
int target = sc.nextInt();
Map
<Integer, Integer
> map1
= new HashMap
<>(); Map
<Integer, Integer
> map2
= new HashMap
<>();
int prefixSum = 0;
int maxLength = 0;
map1.put(0, -1);
map2.put(0, -1);
for (int j = 0; j < n; j++) {
prefixSum += arr[j];
int x = prefixSum - target;
if (map1.containsKey(x)) {
int i = map1.get(x);
int currentLength = j - i;
if (currentLength > maxLength) {
maxLength = currentLength;
}
}
if (map2.containsKey(x)) {
int i = map2.get(x);
int currentLength = j - i;
if (currentLength < minLength) {
minLength = currentLength;
}
}
map1.putIfAbsent(prefixSum, j);
map2.put(prefixSum, j);
}
System.
out.
println("Maximum Length: " + maxLength
);
if (minLength
== Integer.
MAX_VALUE) { System.
out.
println("Minimum Length: 0"); } else {
System.
out.
println("Minimum Length: " + minLength
); }
sc.close();
}
}
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwppbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CmltcG9ydCBqYXZhLnV0aWwuTWFwOwoKY2xhc3MgU3ViYXJyYXlMZW5ndGhGaW5kZXIgewoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICBpbnQgbiA9IHNjLm5leHRJbnQoKTsKICAgICAgICBpbnRbXSBhcnIgPSBuZXcgaW50W25dOwogICAgICAgIAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGFycltpXSA9IHNjLm5leHRJbnQoKTsKICAgICAgICB9CiAgICAgICAgaW50IHRhcmdldCA9IHNjLm5leHRJbnQoKTsKICAgICAgICAKICAgICAgICBNYXA8SW50ZWdlciwgSW50ZWdlcj4gbWFwMSA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICBNYXA8SW50ZWdlciwgSW50ZWdlcj4gbWFwMiA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICAKICAgICAgICBpbnQgcHJlZml4U3VtID0gMDsKICAgICAgICBpbnQgbWF4TGVuZ3RoID0gMDsKICAgICAgICBpbnQgbWluTGVuZ3RoID0gSW50ZWdlci5NQVhfVkFMVUU7CgogICAgICAgIG1hcDEucHV0KDAsIC0xKTsKICAgICAgICBtYXAyLnB1dCgwLCAtMSk7CgogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgaisrKSB7CiAgICAgICAgICAgIHByZWZpeFN1bSArPSBhcnJbal07CgogICAgICAgICAgICBpbnQgeCA9IHByZWZpeFN1bSAtIHRhcmdldDsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChtYXAxLmNvbnRhaW5zS2V5KHgpKSB7CiAgICAgICAgICAgICAgICBpbnQgaSA9IG1hcDEuZ2V0KHgpOwogICAgICAgICAgICAgICAgaW50IGN1cnJlbnRMZW5ndGggPSBqIC0gaTsKICAgICAgICAgICAgICAgIGlmIChjdXJyZW50TGVuZ3RoID4gbWF4TGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgbWF4TGVuZ3RoID0gY3VycmVudExlbmd0aDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKG1hcDIuY29udGFpbnNLZXkoeCkpIHsKICAgICAgICAgICAgICAgIGludCBpID0gbWFwMi5nZXQoeCk7CiAgICAgICAgICAgICAgICBpbnQgY3VycmVudExlbmd0aCA9IGogLSBpOwogICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRMZW5ndGggPCBtaW5MZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBtaW5MZW5ndGggPSBjdXJyZW50TGVuZ3RoOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBtYXAxLnB1dElmQWJzZW50KHByZWZpeFN1bSwgaik7CiAgICAgICAgICAgIG1hcDIucHV0KHByZWZpeFN1bSwgaik7CiAgICAgICAgfQoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk1heGltdW0gTGVuZ3RoOiAiICsgbWF4TGVuZ3RoKTsKICAgICAgICAKICAgICAgICBpZiAobWluTGVuZ3RoID09IEludGVnZXIuTUFYX1ZBTFVFKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTWluaW11bSBMZW5ndGg6IDAiKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk1pbmltdW0gTGVuZ3RoOiAiICsgbWluTGVuZ3RoKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgc2MuY2xvc2UoKTsKICAgIH0KfQo=