public static int maxTwoSubArrays(ArrayList<Integer> nums) {
        // write your code
        List<Integer>A=nums;
        int n=A.size();
        int[]p=new int[n];
        p[0]=A.get(0);
        for (int i=1, lm=A.get(0);i<n;++i) {
            int a=A.get(i);
            p[i]=Math.max(lm=Math.max(a,a+lm),p[i-1]);
        }
        int rel=Integer.MIN_VALUE;
        for (int i=n-1,lm=Integer.MIN_VALUE/2;i>0;--i) {
            int a=A.get(i);
            lm=Math.max(a,a+lm);
            rel=Math.max(rel, p[i-1]+lm);
        }
        return rel;
    }