import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{

  public static void main(String[] args) throws IOException {
    // 標準入力用
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    // 標準入力の値を、半角スペースで分割
    String[] inputRowAndCol = (input.readLine()).split("\\s");
    int row = Integer.parseInt(inputRowAndCol[0]); // 行
    int col = Integer.parseInt(inputRowAndCol[1]); // 列

    // 行列A
    int[][] matrixA = new int[row][col];
    String[] matrixData = null; // 実際の行列のデータ用
    // 行の数だけ繰り返し
    for (int i = 0; i < row; i++) {
      // 標準入力の値を、半角スペースで分割
      matrixData = (input.readLine()).split("\\s");
      // 列の数だけ繰り返し
      for (int j = 0; j < col; j++) {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      }
    }
    // ベクトルb
    int[] vectorB = new int[col];
    for (int k = 0; k < col; k++) {
      vectorB[k] = Integer.parseInt(input.readLine());
    }

    // 行列の積
    // 行の数だけ繰り返し
    for (int l = 0; l < row; l++) {
      int result = 0; // リセット（次の行の計算のため初期化）
      // 列の数だけ繰り返し
      for (int m = 0; m < col; m++) {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      }
      // 表示
      System.out.println(result);
    }
  }
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io public class Main{

  public static void main(String[] args) throws IOException {
    // 標準入力用
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    // 標準入力の値を、半角スペースで分割
    String[] inputRowAndCol = (input.readLine()).split("\\s");
    int row = Integer.parseInt(inputRowAndCol[0]); // 行
    int col = Integer.parseInt(inputRowAndCol[1]); // 列

    // 行列A
    int[][] matrixA = new int[row][col];
    String[] matrixData = null; // 実際の行列のデータ用
    // 行の数だけ繰り返し
    for (int i = 0; i < row; i++) {
      // 標準入力の値を、半角スペースで分割
      matrixData = (input.readLine()).split("\\s");
      // 列の数だけ繰り返し
      for (int j = 0; j < col; j++) {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      }
    }
    // ベクトルb
    int[] vectorB = new int[col];
    for (int k = 0; k < col; k++) {
      vectorB[k] = Integer.parseInt(input.readLine());
    }

    // 行列の積
    // 行の数だけ繰り返し
    for (int l = 0; l < row; l++) {
      int result = 0; // リセット（次の行の計算のため初期化）
      // 列の数だけ繰り返し
      for (int m = 0; m < col; m++) {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      }
      // 表示
      System.out.println(result);
    }
  }
} Main public static void main(String[] args) throws IOException {
    // 標準入力用
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    // 標準入力の値を、半角スペースで分割
    String[] inputRowAndCol = (input.readLine()).split("\\s");
    int row = Integer.parseInt(inputRowAndCol[0]); // 行
    int col = Integer.parseInt(inputRowAndCol[1]); // 列

    // 行列A
    int[][] matrixA = new int[row][col];
    String[] matrixData = null; // 実際の行列のデータ用
    // 行の数だけ繰り返し
    for (int i = 0; i < row; i++) {
      // 標準入力の値を、半角スペースで分割
      matrixData = (input.readLine()).split("\\s");
      // 列の数だけ繰り返し
      for (int j = 0; j < col; j++) {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      }
    }
    // ベクトルb
    int[] vectorB = new int[col];
    for (int k = 0; k < col; k++) {
      vectorB[k] = Integer.parseInt(input.readLine());
    }

    // 行列の積
    // 行の数だけ繰り返し
    for (int l = 0; l < row; l++) {
      int result = 0; // リセット（次の行の計算のため初期化）
      // 列の数だけ繰り返し
      for (int m = 0; m < col; m++) {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      }
      // 表示
      System.out.println(result);
    }
  } main {
    // 標準入力用
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    // 標準入力の値を、半角スペースで分割
    String[] inputRowAndCol = (input.readLine()).split("\\s");
    int row = Integer.parseInt(inputRowAndCol[0]); // 行
    int col = Integer.parseInt(inputRowAndCol[1]); // 列

    // 行列A
    int[][] matrixA = new int[row][col];
    String[] matrixData = null; // 実際の行列のデータ用
    // 行の数だけ繰り返し
    for (int i = 0; i < row; i++) {
      // 標準入力の値を、半角スペースで分割
      matrixData = (input.readLine()).split("\\s");
      // 列の数だけ繰り返し
      for (int j = 0; j < col; j++) {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      }
    }
    // ベクトルb
    int[] vectorB = new int[col];
    for (int k = 0; k < col; k++) {
      vectorB[k] = Integer.parseInt(input.readLine());
    }

    // 行列の積
    // 行の数だけ繰り返し
    for (int l = 0; l < row; l++) {
      int result = 0; // リセット（次の行の計算のため初期化）
      // 列の数だけ繰り返し
      for (int m = 0; m < col; m++) {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      }
      // 表示
      System.out.println(result);
    }
  } BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); input new BufferedReader(new InputStreamReader(System.in)) String[] inputRowAndCol = (input.readLine()).split("\\s"); inputRowAndCol (input.readLine()).split("\\s") (input.readLine()).split (input.readLine()) input.readLine input "\\s" int row = Integer.parseInt(inputRowAndCol[0]); row Integer.parseInt(inputRowAndCol[0]) Integer.parseInt Integer inputRowAndCol[0] inputRowAndCol 0 int col = Integer.parseInt(inputRowAndCol[1]); col Integer.parseInt(inputRowAndCol[1]) Integer.parseInt Integer inputRowAndCol[1] inputRowAndCol 1 int[][] matrixA = new int[row][col]; matrixA new int[row][col] row col String[] matrixData = null; matrixData null for (int i = 0; i < row; i++) {
      // 標準入力の値を、半角スペースで分割
      matrixData = (input.readLine()).split("\\s");
      // 列の数だけ繰り返し
      for (int j = 0; j < col; j++) {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      }
    } int i = 0; int i = 0; i 0 i < row i row i++ i++ i {
      // 標準入力の値を、半角スペースで分割
      matrixData = (input.readLine()).split("\\s");
      // 列の数だけ繰り返し
      for (int j = 0; j < col; j++) {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      }
    } {
      // 標準入力の値を、半角スペースで分割
      matrixData = (input.readLine()).split("\\s");
      // 列の数だけ繰り返し
      for (int j = 0; j < col; j++) {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      }
    } matrixData = (input.readLine()).split("\\s") matrixData (input.readLine()).split("\\s") (input.readLine()).split (input.readLine()) input.readLine input "\\s" for (int j = 0; j < col; j++) {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      } int j = 0; int j = 0; j 0 j < col j col j++ j++ j {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      } {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      } matrixA[i][j] = Integer.parseInt(matrixData[j]) matrixA[i][j] matrixA[i] matrixA i j Integer.parseInt(matrixData[j]) Integer.parseInt Integer matrixData[j] matrixData j int[] vectorB = new int[col]; vectorB new int[col] col for (int k = 0; k < col; k++) {
      vectorB[k] = Integer.parseInt(input.readLine());
    } int k = 0; int k = 0; k 0 k < col k col k++ k++ k {
      vectorB[k] = Integer.parseInt(input.readLine());
    } {
      vectorB[k] = Integer.parseInt(input.readLine());
    } vectorB[k] = Integer.parseInt(input.readLine()) vectorB[k] vectorB k Integer.parseInt(input.readLine()) Integer.parseInt Integer input.readLine() input.readLine input for (int l = 0; l < row; l++) {
      int result = 0; // リセット（次の行の計算のため初期化）
      // 列の数だけ繰り返し
      for (int m = 0; m < col; m++) {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      }
      // 表示
      System.out.println(result);
    } int l = 0; int l = 0; l 0 l < row l row l++ l++ l {
      int result = 0; // リセット（次の行の計算のため初期化）
      // 列の数だけ繰り返し
      for (int m = 0; m < col; m++) {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      }
      // 表示
      System.out.println(result);
    } {
      int result = 0; // リセット（次の行の計算のため初期化）
      // 列の数だけ繰り返し
      for (int m = 0; m < col; m++) {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      }
      // 表示
      System.out.println(result);
    } int result = 0; result 0 for (int m = 0; m < col; m++) {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      } int m = 0; int m = 0; m 0 m < col m col m++ m++ m {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      } {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      } result += (matrixA[l][m] * vectorB[m]) result (matrixA[l][m] * vectorB[m]) matrixA[l][m] matrixA[l] matrixA l m vectorB[m] vectorB m System.out.println(result) System.out.println System.out System System.out result String[] args args public class Main{

  public static void main(String[] args) throws IOException {
    // 標準入力用
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    // 標準入力の値を、半角スペースで分割
    String[] inputRowAndCol = (input.readLine()).split("\\s");
    int row = Integer.parseInt(inputRowAndCol[0]); // 行
    int col = Integer.parseInt(inputRowAndCol[1]); // 列

    // 行列A
    int[][] matrixA = new int[row][col];
    String[] matrixData = null; // 実際の行列のデータ用
    // 行の数だけ繰り返し
    for (int i = 0; i < row; i++) {
      // 標準入力の値を、半角スペースで分割
      matrixData = (input.readLine()).split("\\s");
      // 列の数だけ繰り返し
      for (int j = 0; j < col; j++) {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      }
    }
    // ベクトルb
    int[] vectorB = new int[col];
    for (int k = 0; k < col; k++) {
      vectorB[k] = Integer.parseInt(input.readLine());
    }

    // 行列の積
    // 行の数だけ繰り返し
    for (int l = 0; l < row; l++) {
      int result = 0; // リセット（次の行の計算のため初期化）
      // 列の数だけ繰り返し
      for (int m = 0; m < col; m++) {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      }
      // 表示
      System.out.println(result);
    }
  }
} public class Main{

  public static void main(String[] args) throws IOException {
    // 標準入力用
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    // 標準入力の値を、半角スペースで分割
    String[] inputRowAndCol = (input.readLine()).split("\\s");
    int row = Integer.parseInt(inputRowAndCol[0]); // 行
    int col = Integer.parseInt(inputRowAndCol[1]); // 列

    // 行列A
    int[][] matrixA = new int[row][col];
    String[] matrixData = null; // 実際の行列のデータ用
    // 行の数だけ繰り返し
    for (int i = 0; i < row; i++) {
      // 標準入力の値を、半角スペースで分割
      matrixData = (input.readLine()).split("\\s");
      // 列の数だけ繰り返し
      for (int j = 0; j < col; j++) {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      }
    }
    // ベクトルb
    int[] vectorB = new int[col];
    for (int k = 0; k < col; k++) {
      vectorB[k] = Integer.parseInt(input.readLine());
    }

    // 行列の積
    // 行の数だけ繰り返し
    for (int l = 0; l < row; l++) {
      int result = 0; // リセット（次の行の計算のため初期化）
      // 列の数だけ繰り返し
      for (int m = 0; m < col; m++) {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      }
      // 表示
      System.out.println(result);
    }
  }
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{

  public static void main(String[] args) throws IOException {
    // 標準入力用
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    // 標準入力の値を、半角スペースで分割
    String[] inputRowAndCol = (input.readLine()).split("\\s");
    int row = Integer.parseInt(inputRowAndCol[0]); // 行
    int col = Integer.parseInt(inputRowAndCol[1]); // 列

    // 行列A
    int[][] matrixA = new int[row][col];
    String[] matrixData = null; // 実際の行列のデータ用
    // 行の数だけ繰り返し
    for (int i = 0; i < row; i++) {
      // 標準入力の値を、半角スペースで分割
      matrixData = (input.readLine()).split("\\s");
      // 列の数だけ繰り返し
      for (int j = 0; j < col; j++) {
        // 行列Aに、標準入力の値を設定していく
        matrixA[i][j] = Integer.parseInt(matrixData[j]);
      }
    }
    // ベクトルb
    int[] vectorB = new int[col];
    for (int k = 0; k < col; k++) {
      vectorB[k] = Integer.parseInt(input.readLine());
    }

    // 行列の積
    // 行の数だけ繰り返し
    for (int l = 0; l < row; l++) {
      int result = 0; // リセット（次の行の計算のため初期化）
      // 列の数だけ繰り返し
      for (int m = 0; m < col; m++) {
        // 計算
        result += (matrixA[l][m] * vectorB[m]);
      }
      // 表示
      System.out.println(result);
    }
  }
}
