static int s(int s, int e, int r) {
		if (dp[s][e] != -1)
			return dp[s][e];
		if (s >= e)
			return 0;
		int min = Integer.MAX_VALUE, div, acum = 0;
		for (int i = s; i < e; i++) {
			acum += l[i];
			div = Math.max(acum, r - acum);
			min = Math.min(min, div + s(s, i, acum) + s(i + 1, e, r - acum));
		}
		return dp[s][e] = min;
	}