#include <bits/stdc++.h>
using namespace std;

int main() {
	int arr[]= {10,5,2,7,1,9};
	int n=sizeof(arr)/sizeof(arr[0]);
	int k=15;
	int currSum=0;
	int maxLength=INT_MIN;
	map<int, int> pSum;
pSum[0] = -1;    //indicates that pSum=0 exists at index i-1 bcoz we need pSum(i-1)
		   //and what if i is 0 i.e. valid subarray starts from index 0 itself
	for(int j=0;j<n;j++){
		currSum+=arr[j];
		int toFind=currSum-k;
		if(pSum.find(toFind)!=pSum.end()){
			int index=pSum[toFind];
			maxLength=max(maxLength, j-index);
		}
		if(pSum.find(currSum)==pSum.end()){
			pSum[currSum]=j;
		}
	}
	cout<<maxLength;
	return 0;
}
