#include <iostream>
using namespace std;
int main()
{
int n;
cin >>n;
double matr1[n][n]; //Матрица А
double matr2[n][n]; // Матрица А^2
double vet1[n]; //Вектор данный по условию (вектор b)
double vet2[n]; //Конечный вектор
for(int i=0;i<n;i++){
for(int j=0; j<n; j++) // Инициализация матрицы А
cin>>matr1[i][j];
}
for(int i=0; i<n;i++){
for(int j=0;j<n;j++){ //Возведение матрицы А в квадрат
matr2[i][j]=0;
for(int p=0;p<n;p++)
matr2[i][j]+=(matr1[i][p]*matr1[p][j]);
}
}
for(int i=0; i<n; i++) //Инициализация вектора
cin >> vet1[i];
for(int i=0;i<n;i++){
vet2[i]=0;
for(int j=0; j<n; j++){
vet2[i]+=matr2[i][j]*vet1[j]; //Умножение матрицы на вектор
}
}
/*for(int i=0; i<n;i++){
for(int j=0;j<n;j++){
cout << matr2[i][j] << "\t"; //Вывод матрицы A^2
}
cout << endl;
}
cout << endl << endl;
*/
for(int i=0; i<n; i++)
cout << vet2[i] << "\t"; //Вывод вектора
cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkKewogICAgaW50IG47CiAgICBjaW4gPj5uOwogICAgZG91YmxlIG1hdHIxW25dW25dOyAgLy/QnNCw0YLRgNC40YbQsCDQkAogICAgZG91YmxlIG1hdHIyW25dW25dOyAvLyDQnNCw0YLRgNC40YbQsCDQkF4yCiAgICBkb3VibGUgdmV0MVtuXTsgIC8v0JLQtdC60YLQvtGAINC00LDQvdC90YvQuSDQv9C+INGD0YHQu9C+0LLQuNGOICjQstC10LrRgtC+0YAgYikKICAgIGRvdWJsZSB2ZXQyW25dOyAgLy/QmtC+0L3QtdGH0L3Ri9C5INCy0LXQutGC0L7RgAogICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgZm9yKGludCBqPTA7IGo8bjsgaisrKSAvLyDQmNC90LjRhtC40LDQu9C40LfQsNGG0LjRjyDQvNCw0YLRgNC40YbRiyDQkAogICAgICAgICAgICBjaW4+Pm1hdHIxW2ldW2pdOwogICAgfQoKICAgIGZvcihpbnQgaT0wOyBpPG47aSsrKXsKICAgICAgICBmb3IoaW50IGo9MDtqPG47aisrKXsgIC8v0JLQvtC30LLQtdC00LXQvdC40LUg0LzQsNGC0YDQuNGG0Ysg0JAg0LIg0LrQstCw0LTRgNCw0YIKICAgICAgICAgICAgbWF0cjJbaV1bal09MDsKICAgICAgICAgICAgZm9yKGludCBwPTA7cDxuO3ArKykKICAgICAgICAgICAgICAgIG1hdHIyW2ldW2pdKz0obWF0cjFbaV1bcF0qbWF0cjFbcF1bal0pOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspIC8v0JjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8g0LLQtdC60YLQvtGA0LAKICAgICAgICBjaW4gPj4gdmV0MVtpXTsKCiAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICB2ZXQyW2ldPTA7CiAgICAgICAgZm9yKGludCBqPTA7IGo8bjsgaisrKXsKICAgICAgICAgICAgdmV0MltpXSs9bWF0cjJbaV1bal0qdmV0MVtqXTsgLy/Qo9C80L3QvtC20LXQvdC40LUg0LzQsNGC0YDQuNGG0Ysg0L3QsCDQstC10LrRgtC+0YAKICAgICAgICB9CiAgICB9CgogICAgLypmb3IoaW50IGk9MDsgaTxuO2krKyl7CiAgICAgICAgZm9yKGludCBqPTA7ajxuO2orKyl7CiAgICAgICAgICAgIGNvdXQgPDwgbWF0cjJbaV1bal0gPDwgIlx0IjsgLy/QktGL0LLQvtC0INC80LDRgtGA0LjRhtGLIEFeMgogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9CiAgICBjb3V0IDw8IGVuZGwgPDwgZW5kbDsKICAgICovCgogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKQogICAgICAgIGNvdXQgPDwgdmV0MltpXSA8PCAiXHQiOyAvL9CS0YvQstC+0LQg0LLQtdC60YLQvtGA0LAKICAgIGNvdXQgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=