#include<iostream>
using namespace std;
typedef long long ll;
int k, m;
struct Matrix {
static const int N = 10;
ll a[N][N];
Matrix(ll e = 0) {
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
a[i][j] = e * (i == j);
}
}
}
Matrix mul(Matrix A, Matrix B) {
Matrix ans(0);
for(int i = 0; i < N; ++i)
for(int j = 0; j < N; ++j)
for (int k = 0; k < N; ++k) {
ans.a[i][j] = (ans.a[i][j] + A.a[i][k] * B.a[k][j]) % m;
}
return ans;
}
Matrix ksm(Matrix A, int k) {
Matrix ans(1);
while (k) {
if (k & 1) ans = mul(ans, A);
A = mul(A, A);
k >>= 1;
}
return ans;
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
Matrix mat(0);
while (cin >> k >> m) {
for (int i = 0; i < 10; ++i)
cin >> mat.a[0][i];
for (int i = 1; i < 10; ++i)
for (int j = 0; j < 10; ++j)
mat.a[i][j] = ((i - 1) == j);
k -= 9;
Matrix tmp(0);
tmp = mat.ksm(mat, k);
ll res = 0;
for (int i = 0; i < 10; ++i)
res = (res + tmp.a[0][i] * (9 - i))%m;
cout << res << "\n";
}
}