#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
pair<vector<long long >,long long > findZeroSumSubarrayWithMostRepeatedElement(vector<long long >& arr) {
unordered_map<long long , long long > prefixSumMap;
unordered_map<long long , long long > frequencyMap;
long long maxFreq = 0, mostRepeatedElement = arr[0];
long long start = -1, end = -1;
long long prefixSum = 0;
prefixSumMap[0] = -1;
for (long long i = 0; i < arr.size(); i++) {
prefixSum += arr[i];
if (prefixSumMap.find(prefixSum) != prefixSumMap.end()) {
long long leftIndex = prefixSumMap[prefixSum] + 1;
vector<long long> subarray(arr.begin() + leftIndex, arr.begin() + i + 1);
unordered_map<long long, long long> tempFreq;
for (long long num : subarray) tempFreq[num]++;
for (auto& [num, freq] : tempFreq) {
if (freq > maxFreq) {
maxFreq = freq;
mostRepeatedElement = num;
start = leftIndex;
end = i;
}
}
} else {
prefixSumMap[prefixSum] = i;
}
}
vector<long long> bestSubarray;
if (start != -1) {
bestSubarray.assign(arr.begin() + start, arr.begin() + end + 1);
}
return {bestSubarray, mostRepeatedElement};
}
int main() {
vector<long long> niz;
long long n;
cin >> n;
for (long long i = 0; i < n; i++){
long long temp;
cin >> temp;
niz.push_back(temp);
}
auto [subarray, mostFrequent] = findZeroSumSubarrayWithMostRepeatedElement(niz);
long long brojac = 0;
for (long long num : subarray)
if(num == mostFrequent)
brojac++;
cout << "\nMost Repeated Element: " << mostFrequent << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpwYWlyPHZlY3Rvcjxsb25nIGxvbmcgPixsb25nIGxvbmcgPiBmaW5kWmVyb1N1bVN1YmFycmF5V2l0aE1vc3RSZXBlYXRlZEVsZW1lbnQodmVjdG9yPGxvbmcgbG9uZyA+JiBhcnIpIHsKICAgIHVub3JkZXJlZF9tYXA8bG9uZyBsb25nICwgbG9uZyBsb25nID4gcHJlZml4U3VtTWFwOyAKICAgIHVub3JkZXJlZF9tYXA8bG9uZyBsb25nICwgbG9uZyBsb25nID4gZnJlcXVlbmN5TWFwOyAKICAgIGxvbmcgbG9uZyAgbWF4RnJlcSA9IDAsIG1vc3RSZXBlYXRlZEVsZW1lbnQgPSBhcnJbMF07CiAgICBsb25nIGxvbmcgIHN0YXJ0ID0gLTEsIGVuZCA9IC0xOwogICAgbG9uZyBsb25nICBwcmVmaXhTdW0gPSAwOwoKICAgIHByZWZpeFN1bU1hcFswXSA9IC0xOyAKCiAgICBmb3IgKGxvbmcgbG9uZyAgaSA9IDA7IGkgPCBhcnIuc2l6ZSgpOyBpKyspIHsKICAgICAgICBwcmVmaXhTdW0gKz0gYXJyW2ldOwoKICAgICAgICBpZiAocHJlZml4U3VtTWFwLmZpbmQocHJlZml4U3VtKSAhPSBwcmVmaXhTdW1NYXAuZW5kKCkpIHsKICAgICAgICAgICAgbG9uZyBsb25nIGxlZnRJbmRleCA9IHByZWZpeFN1bU1hcFtwcmVmaXhTdW1dICsgMTsKICAgICAgICAgICAgdmVjdG9yPGxvbmcgbG9uZz4gc3ViYXJyYXkoYXJyLmJlZ2luKCkgKyBsZWZ0SW5kZXgsIGFyci5iZWdpbigpICsgaSArIDEpOwoKICAgICAgICAgICAgCiAgICAgICAgICAgIHVub3JkZXJlZF9tYXA8bG9uZyBsb25nLCBsb25nIGxvbmc+IHRlbXBGcmVxOwogICAgICAgICAgICBmb3IgKGxvbmcgbG9uZyBudW0gOiBzdWJhcnJheSkgdGVtcEZyZXFbbnVtXSsrOwoKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAoYXV0byYgW251bSwgZnJlcV0gOiB0ZW1wRnJlcSkgewogICAgICAgICAgICAgICAgaWYgKGZyZXEgPiBtYXhGcmVxKSB7CiAgICAgICAgICAgICAgICAgICAgbWF4RnJlcSA9IGZyZXE7CiAgICAgICAgICAgICAgICAgICAgbW9zdFJlcGVhdGVkRWxlbWVudCA9IG51bTsKICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGxlZnRJbmRleDsKICAgICAgICAgICAgICAgICAgICBlbmQgPSBpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcHJlZml4U3VtTWFwW3ByZWZpeFN1bV0gPSBpOwogICAgICAgIH0KICAgIH0KCiAgICB2ZWN0b3I8bG9uZyBsb25nPiBiZXN0U3ViYXJyYXk7CiAgICBpZiAoc3RhcnQgIT0gLTEpIHsKICAgICAgICBiZXN0U3ViYXJyYXkuYXNzaWduKGFyci5iZWdpbigpICsgc3RhcnQsIGFyci5iZWdpbigpICsgZW5kICsgMSk7CiAgICB9CgogICAgcmV0dXJuIHtiZXN0U3ViYXJyYXksIG1vc3RSZXBlYXRlZEVsZW1lbnR9Owp9CgppbnQgbWFpbigpIHsKICAgIHZlY3Rvcjxsb25nIGxvbmc+IG5pejsKICAgIGxvbmcgbG9uZyBuOwogICAgY2luID4+IG47CiAgICBmb3IgKGxvbmcgbG9uZyBpID0gMDsgaSA8IG47IGkrKyl7CiAgICAJbG9uZyBsb25nIHRlbXA7CiAgICAJY2luID4+IHRlbXA7CiAgICAJbml6LnB1c2hfYmFjayh0ZW1wKTsKICAgIH0KCiAgICBhdXRvIFtzdWJhcnJheSwgbW9zdEZyZXF1ZW50XSA9IGZpbmRaZXJvU3VtU3ViYXJyYXlXaXRoTW9zdFJlcGVhdGVkRWxlbWVudChuaXopOwogICAgCiAgICBsb25nIGxvbmcgYnJvamFjID0gMDsKCiAgICBmb3IgKGxvbmcgbG9uZyBudW0gOiBzdWJhcnJheSkgCiAgICAJaWYobnVtID09IG1vc3RGcmVxdWVudCkgCiAgICAJCWJyb2phYysrOwogICAgY291dCA8PCAiXG5Nb3N0IFJlcGVhdGVkIEVsZW1lbnQ6ICIgPDwgbW9zdEZyZXF1ZW50IDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=