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

vector<int> bestPrefixSum(vector<int>& arr , int n){
	int prev=0 , current;
	vector<int> p1(n+1);
	for(int i=1;i<=n;i++){
		int current=max(prev+arr[i-1],arr[i-1]);
		int current1=max(current,0);
		prev=current1;
		p1[i]=current1;
	}
	return p1;
}

vector<int> bestSuffixSum(vector<int>& arr , int n){
	int aage=0 , current;
	vector<int> s1(n+1);
	for(int i=n+1;i>0;i--){
		int current=max(aage+arr[i-1],arr[i-1]);
		int current1=max(current,0);
		aage=current1;
		s1[i]=current1;
	}
	return s1;
}
int sumOf2Subarray(vector<int>& pp , vector<int> &ss, int n){
	vector<int> maxPP(n+2,0);
	vector<int> maxSS(n+2,0);
	int maxsum=0;
	for(int i=2;i<n+2;i++){
		maxPP[i]=max(maxPP[i-1],pp[i-1]);
		
	}
	for(int i=n;i>=0;i--){
		maxSS[i]=max(maxSS[i+1],ss[i]);
		
	}

	
}
int main() {
	vector<int> arr={-1,1,2,3,4,-2,6,-10};
	int n=arr.size();
	vector<int> pp=bestPrefixSum(arr , n);
	vector<int> ss=bestSuffixSum(arr , n);
	for(int i=1;i<=n;i++){
		cout<<pp[i]<<"     ";
	}
	cout<<endl;
	for(int i=1;i<=n;i++){
		cout<<ss[i]<<"      ";
	}
	cout<<endl;
	for(int i=1;i<n;i++){
		cout<<pp[i]<<"  "<<ss[i+1]<<endl;
		
	}
	return 0;
}