1264f47a0fa9cb930e5a701d09c793d1d97dc64974a6053571e973a78ba8300d
// https://szkopul.edu.pl/problemset/problem/c9kbLOJVLHiQDcmiNo8Pa4w6/site/?key=statement
#include <bits/stdc++.h>
// #define GARY_DBG
#define GARY_LIB
#define int int64_t
constexpr int sizik = 1000 * 1001;
#define ar std::array
const int MAXN = 703;
struct Matrix {
int r, c;
std::bitset<MAXN> mat[MAXN];
Matrix(int _r, int _c) : r(_r), c(_c) {
for (int i = 0; i < r; i++)
mat[i].reset();
}
static Matrix identity(int n) {
Matrix res(n, n);
for (int i = 0; i < n; i++)
res.mat[i][i] = 1;
return res;
}
bool get(int i, int j) const { return mat[i][j]; }
void set(int i, int j, int val) { mat[i][j] = (val % 2); }
Matrix operator*(const Matrix& other) const {
Matrix res(r, other.c);
for (int i = 0; i < r; i++) {
for (int k = 0; k < c; k++) {
if (mat[i][k]) {
res.mat[i] ^= other.mat[k];
}
}
}
return res;
}
Matrix pow(long long p) const {
Matrix res = identity(r);
Matrix a = *this;
while (p > 0) {
if (p & 1) res = res * a;
a = a * a;
p >>= 1;
}
return res;
}
};
typedef std::vector<std::vector<int>> _kra;
void solve() {
int n, d;
std::cin >> n >> d;
std::string s;
std::cin >> s;
Matrix M(n, n);
for (int i = 0; i < n - 1; i++) {
M.mat[i][i + 1] = 1;
}
M.mat[n - 1][0] = 1;
M.mat[n - 1][1] = 1;
M = M.pow(d);
Matrix M2(n, 1);
for (int i = 0; i < n; i++) {
M2.mat[i][0] = (s[i] - '0');
}
Matrix C = M * M2;
for (int i = 0; i < n; i++) {
std::cout << C.mat[i][0];
}
std::cout << '\n';
}
int32_t main() {
#ifndef GARY_DBG
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
#endif
int t = 1;
// std::cin >> t;
for (; t > 0; t--) {
solve();
}
return 0;
}