import java.util.*;


public class Solution {
    public int solve(int n, int[] a1, int[] a2, int[] a3, int[] m) {

        if (n <= 0) return 0;

        int[][] data = new int[3][];
        data[0] = a1;
        data[1] = a2;
        data[2] = a3;

        int dp[][] = new int[3][n];
        dp[0][0] = a1[0];
        dp[1][0] = a2[0];
        dp[2][0] = a3[0];

        for (int col = 1; col < n; ++col) {
            dp[0][col] = Math.max(dp[0][col - 1],
                    dp[1][col - 1] - m[col - 1]) + data[0][col];

            dp[1][col] = Math.max(dp[1][col - 1],
                    Math.max(dp[0][col - 1] - m[col - 1],
                            dp[2][col - 1] - m[col - 1])) + data[1][col];

            dp[2][col] = Math.max(dp[2][col - 1],
                    dp[1][col - 1] - m[col - 1]) + data[2][col];
        }
        return Math.max(dp[0][n - 1], Math.max(dp[1][n - 1], dp[2][n - 1]));

    }
}