import java.util.Scanner;
public class _3_4最大子段和分治算法 {
static int n;
static int[] a=new int[100];
static int MaxSubSum(int left,int right){
int sum=0;
if(left==right)
sum=a[left]>0?a[left]:0;
else{
int center=(left+right)>>2;
int leftsum=MaxSubSum(left,center);
int rightsum=MaxSubSum(center+1,right);
int s1=0;
int lefts=0;
for(int i=center;i>=left;i--){
lefts+=a[i];
if(lefts>s1)
s1=lefts;
}
int s2=0;
int rights=0;
for(int i=center+1;i<=right;i++){
rights+=a[i];
if(rights>s2)
s2=rights;
}
sum=s1+s2;
if(sum<leftsum)
sum=leftsum;
if(sum<rightsum)
sum=rightsum;
}
return sum;
}
static int MaxSum(){
return MaxSubSum(1,n);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
System.out.println(MaxSum());
}
}