import java.util.*;

public class xiaowuc1 {
  static final long INF = (long)1e18;
  public static void main(String[] args) throws Exception {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt(), m = sc.nextInt(), cap = sc.nextInt();
    int[][] plans = new int[n][3];
    for(int i = 0; i < n; i++) for(int j = 0; j < 3; j++) plans[i][j] = sc.nextInt();
    int[][] sellprice = new int[n][m];
    int[][] sellamt = new int[n][m];
    for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) sellprice[i][j] = sc.nextInt();
    for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) sellamt[i][j] = sc.nextInt();
    long[] dp = new long[251];
    Arrays.fill(dp, INF);
    dp[0] = 0;
    for(int tt = 0; tt < n; tt++) {
      long[] ndp = new long[dp.length];
      Arrays.fill(ndp, INF);
      int priceper = plans[tt][0];
      int powerneed = plans[tt][1];
      int solargen = plans[tt][2];
      for(int i = 0; i <= cap; i++) {
        ndp[i+solargen] = Math.min(ndp[i+solargen], dp[i]);
      }
      for(int i = 1; i < dp.length; i++) {
        ndp[i] = Math.min(ndp[i], ndp[i-1] + priceper);
      }
      for(int amt = 0; amt < dp.length; amt++) {
        for(int j = 0; j < m; j++) {
          if(amt + sellamt[tt][j] < dp.length) {
            ndp[amt] = Math.min(ndp[amt], ndp[amt + sellamt[tt][j]] - sellprice[tt][j]);
          }
        } 
      }
      for(int i = ndp.length-2; i >= 0; i--) ndp[i] = Math.min(ndp[i], ndp[i+1]);
      for(int i = 0; i <= cap; i++) ndp[i] = ndp[i + powerneed];
      for(int i = cap+1; i < ndp.length; i++) {
        ndp[i] = INF;
      }
      dp = ndp;
    }
    long ret = INF;
    for(long out: dp) ret = Math.min(ret, out);
    System.out.println(ret);
  }
}
