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

public class Main {

	public static void main(String[] args) throws IOException {

		//	Scanner sc = new Scanner(System.in);//入力
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

		//渡される定数
		String[] Aandb = (input.readLine()).split("\\s");//入力数値をスペース前後で分割
		int n = Integer.parseInt(Aandb[0]);//配列n(前)
		int m = Integer.parseInt(Aandb[1]);//配列m(後)

		//CはAとbの掛け算
		//for(int i =1;i<m;i++){
		//C +=A*b}

		//n*mである行列Aの計算
		int[][] A = new int[n][m];//Aの要素nとm
		String[] z = null; //実行データ用　文字列として使っているため0でなくnull
		for (int i = 0; i < n; i++) {//nのループ
			z = (input.readLine()).split("\\s");//入力を半角スペースで分轄
			for (int j = 0; j < m; j++) {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			}
		}

		//m*1であるベクトルbの計算
		int[] b = new int[m];//bの要素m
		for (int k = 0; k < m; k++) {
			b[k] = Integer.parseInt(input.readLine());//文字列から数値に変換

		}

		//A*bの積C
		for (int l = 0; l < n; l++) {
			int C = 0;//合計の初期化
			for (int s = 0; s < m; s++){
				C += (A[l][s] * b[s]);
			}
			System.out.println(C);//出力
		}
	}
} 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 {

		//	Scanner sc = new Scanner(System.in);//入力
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

		//渡される定数
		String[] Aandb = (input.readLine()).split("\\s");//入力数値をスペース前後で分割
		int n = Integer.parseInt(Aandb[0]);//配列n(前)
		int m = Integer.parseInt(Aandb[1]);//配列m(後)

		//CはAとbの掛け算
		//for(int i =1;i<m;i++){
		//C +=A*b}

		//n*mである行列Aの計算
		int[][] A = new int[n][m];//Aの要素nとm
		String[] z = null; //実行データ用　文字列として使っているため0でなくnull
		for (int i = 0; i < n; i++) {//nのループ
			z = (input.readLine()).split("\\s");//入力を半角スペースで分轄
			for (int j = 0; j < m; j++) {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			}
		}

		//m*1であるベクトルbの計算
		int[] b = new int[m];//bの要素m
		for (int k = 0; k < m; k++) {
			b[k] = Integer.parseInt(input.readLine());//文字列から数値に変換

		}

		//A*bの積C
		for (int l = 0; l < n; l++) {
			int C = 0;//合計の初期化
			for (int s = 0; s < m; s++){
				C += (A[l][s] * b[s]);
			}
			System.out.println(C);//出力
		}
	}
} Main public static void main(String[] args) throws IOException {

		//	Scanner sc = new Scanner(System.in);//入力
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

		//渡される定数
		String[] Aandb = (input.readLine()).split("\\s");//入力数値をスペース前後で分割
		int n = Integer.parseInt(Aandb[0]);//配列n(前)
		int m = Integer.parseInt(Aandb[1]);//配列m(後)

		//CはAとbの掛け算
		//for(int i =1;i<m;i++){
		//C +=A*b}

		//n*mである行列Aの計算
		int[][] A = new int[n][m];//Aの要素nとm
		String[] z = null; //実行データ用　文字列として使っているため0でなくnull
		for (int i = 0; i < n; i++) {//nのループ
			z = (input.readLine()).split("\\s");//入力を半角スペースで分轄
			for (int j = 0; j < m; j++) {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			}
		}

		//m*1であるベクトルbの計算
		int[] b = new int[m];//bの要素m
		for (int k = 0; k < m; k++) {
			b[k] = Integer.parseInt(input.readLine());//文字列から数値に変換

		}

		//A*bの積C
		for (int l = 0; l < n; l++) {
			int C = 0;//合計の初期化
			for (int s = 0; s < m; s++){
				C += (A[l][s] * b[s]);
			}
			System.out.println(C);//出力
		}
	} main {

		//	Scanner sc = new Scanner(System.in);//入力
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

		//渡される定数
		String[] Aandb = (input.readLine()).split("\\s");//入力数値をスペース前後で分割
		int n = Integer.parseInt(Aandb[0]);//配列n(前)
		int m = Integer.parseInt(Aandb[1]);//配列m(後)

		//CはAとbの掛け算
		//for(int i =1;i<m;i++){
		//C +=A*b}

		//n*mである行列Aの計算
		int[][] A = new int[n][m];//Aの要素nとm
		String[] z = null; //実行データ用　文字列として使っているため0でなくnull
		for (int i = 0; i < n; i++) {//nのループ
			z = (input.readLine()).split("\\s");//入力を半角スペースで分轄
			for (int j = 0; j < m; j++) {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			}
		}

		//m*1であるベクトルbの計算
		int[] b = new int[m];//bの要素m
		for (int k = 0; k < m; k++) {
			b[k] = Integer.parseInt(input.readLine());//文字列から数値に変換

		}

		//A*bの積C
		for (int l = 0; l < n; l++) {
			int C = 0;//合計の初期化
			for (int s = 0; s < m; s++){
				C += (A[l][s] * b[s]);
			}
			System.out.println(C);//出力
		}
	} BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); input new BufferedReader(new InputStreamReader(System.in)) String[] Aandb = (input.readLine()).split("\\s"); Aandb (input.readLine()).split("\\s") (input.readLine()).split (input.readLine()) input.readLine input "\\s" int n = Integer.parseInt(Aandb[0]); n Integer.parseInt(Aandb[0]) Integer.parseInt Integer Aandb[0] Aandb 0 int m = Integer.parseInt(Aandb[1]); m Integer.parseInt(Aandb[1]) Integer.parseInt Integer Aandb[1] Aandb 1 int[][] A = new int[n][m]; A new int[n][m] n m String[] z = null; z null for (int i = 0; i < n; i++) {//nのループ
			z = (input.readLine()).split("\\s");//入力を半角スペースで分轄
			for (int j = 0; j < m; j++) {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			}
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {//nのループ
			z = (input.readLine()).split("\\s");//入力を半角スペースで分轄
			for (int j = 0; j < m; j++) {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			}
		} {//nのループ
			z = (input.readLine()).split("\\s");//入力を半角スペースで分轄
			for (int j = 0; j < m; j++) {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			}
		} z = (input.readLine()).split("\\s") z (input.readLine()).split("\\s") (input.readLine()).split (input.readLine()) input.readLine input "\\s" for (int j = 0; j < m; j++) {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			} int j = 0; int j = 0; j 0 j < m j m j++ j++ j {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			} {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			} A[i][j] = Integer.parseInt(z[j]) A[i][j] A[i] A i j Integer.parseInt(z[j]) Integer.parseInt Integer z[j] z j int[] b = new int[m]; b new int[m] m for (int k = 0; k < m; k++) {
			b[k] = Integer.parseInt(input.readLine());//文字列から数値に変換

		} int k = 0; int k = 0; k 0 k < m k m k++ k++ k {
			b[k] = Integer.parseInt(input.readLine());//文字列から数値に変換

		} {
			b[k] = Integer.parseInt(input.readLine());//文字列から数値に変換

		} b[k] = Integer.parseInt(input.readLine()) b[k] b k Integer.parseInt(input.readLine()) Integer.parseInt Integer input.readLine() input.readLine input for (int l = 0; l < n; l++) {
			int C = 0;//合計の初期化
			for (int s = 0; s < m; s++){
				C += (A[l][s] * b[s]);
			}
			System.out.println(C);//出力
		} int l = 0; int l = 0; l 0 l < n l n l++ l++ l {
			int C = 0;//合計の初期化
			for (int s = 0; s < m; s++){
				C += (A[l][s] * b[s]);
			}
			System.out.println(C);//出力
		} {
			int C = 0;//合計の初期化
			for (int s = 0; s < m; s++){
				C += (A[l][s] * b[s]);
			}
			System.out.println(C);//出力
		} int C = 0; C 0 for (int s = 0; s < m; s++){
				C += (A[l][s] * b[s]);
			} int s = 0; int s = 0; s 0 s < m s m s++ s++ s {
				C += (A[l][s] * b[s]);
			} {
				C += (A[l][s] * b[s]);
			} C += (A[l][s] * b[s]) C (A[l][s] * b[s]) A[l][s] A[l] A l s b[s] b s System.out.println(C) System.out.println System.out System System.out C String[] args args public class Main {

	public static void main(String[] args) throws IOException {

		//	Scanner sc = new Scanner(System.in);//入力
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

		//渡される定数
		String[] Aandb = (input.readLine()).split("\\s");//入力数値をスペース前後で分割
		int n = Integer.parseInt(Aandb[0]);//配列n(前)
		int m = Integer.parseInt(Aandb[1]);//配列m(後)

		//CはAとbの掛け算
		//for(int i =1;i<m;i++){
		//C +=A*b}

		//n*mである行列Aの計算
		int[][] A = new int[n][m];//Aの要素nとm
		String[] z = null; //実行データ用　文字列として使っているため0でなくnull
		for (int i = 0; i < n; i++) {//nのループ
			z = (input.readLine()).split("\\s");//入力を半角スペースで分轄
			for (int j = 0; j < m; j++) {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			}
		}

		//m*1であるベクトルbの計算
		int[] b = new int[m];//bの要素m
		for (int k = 0; k < m; k++) {
			b[k] = Integer.parseInt(input.readLine());//文字列から数値に変換

		}

		//A*bの積C
		for (int l = 0; l < n; l++) {
			int C = 0;//合計の初期化
			for (int s = 0; s < m; s++){
				C += (A[l][s] * b[s]);
			}
			System.out.println(C);//出力
		}
	}
} public class Main {

	public static void main(String[] args) throws IOException {

		//	Scanner sc = new Scanner(System.in);//入力
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

		//渡される定数
		String[] Aandb = (input.readLine()).split("\\s");//入力数値をスペース前後で分割
		int n = Integer.parseInt(Aandb[0]);//配列n(前)
		int m = Integer.parseInt(Aandb[1]);//配列m(後)

		//CはAとbの掛け算
		//for(int i =1;i<m;i++){
		//C +=A*b}

		//n*mである行列Aの計算
		int[][] A = new int[n][m];//Aの要素nとm
		String[] z = null; //実行データ用　文字列として使っているため0でなくnull
		for (int i = 0; i < n; i++) {//nのループ
			z = (input.readLine()).split("\\s");//入力を半角スペースで分轄
			for (int j = 0; j < m; j++) {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			}
		}

		//m*1であるベクトルbの計算
		int[] b = new int[m];//bの要素m
		for (int k = 0; k < m; k++) {
			b[k] = Integer.parseInt(input.readLine());//文字列から数値に変換

		}

		//A*bの積C
		for (int l = 0; l < n; l++) {
			int C = 0;//合計の初期化
			for (int s = 0; s < m; s++){
				C += (A[l][s] * b[s]);
			}
			System.out.println(C);//出力
		}
	}
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws IOException {

		//	Scanner sc = new Scanner(System.in);//入力
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

		//渡される定数
		String[] Aandb = (input.readLine()).split("\\s");//入力数値をスペース前後で分割
		int n = Integer.parseInt(Aandb[0]);//配列n(前)
		int m = Integer.parseInt(Aandb[1]);//配列m(後)

		//CはAとbの掛け算
		//for(int i =1;i<m;i++){
		//C +=A*b}

		//n*mである行列Aの計算
		int[][] A = new int[n][m];//Aの要素nとm
		String[] z = null; //実行データ用　文字列として使っているため0でなくnull
		for (int i = 0; i < n; i++) {//nのループ
			z = (input.readLine()).split("\\s");//入力を半角スペースで分轄
			for (int j = 0; j < m; j++) {//mのループ
				A[i][j] = Integer.parseInt(z[j]);//文字列から数値に変換
			}
		}

		//m*1であるベクトルbの計算
		int[] b = new int[m];//bの要素m
		for (int k = 0; k < m; k++) {
			b[k] = Integer.parseInt(input.readLine());//文字列から数値に変換

		}

		//A*bの積C
		for (int l = 0; l < n; l++) {
			int C = 0;//合計の初期化
			for (int s = 0; s < m; s++){
				C += (A[l][s] * b[s]);
			}
			System.out.println(C);//出力
		}
	}
}
