#include <bits/stdc++.h>
#define all(v) (v).begin(), (v).end()
using namespace std;
const int maxN = 2e5+10;
ll n, m;
void prll(ll mask) {
for (ll i=0; i<n; i++) {
cout << char((mask>>i&1)+'0');
}
}
ll ask(ll mask) {
cout << "? ";
prll(mask);
cout << endl;
ll res = 0;
for (ll i=0; i<m; i++) {
char c;
cin >> c;
res += (c-'0')*(1<<i);
}
return res;
}
random_device rd;
mt19937 gen(rd());
uniform_ll_distribution<ll> dist(0, 0);
ll rand(ll l, ll r) {
dist.param(uniform_ll_distribution<ll>::param_type{l, r});
return dist(gen);
}
void solve() {
cin >> n >> m;
map<ll, ll> prev;
if (n<=10) {
for (ll mask=0; mask<1<<n; mask++) {
ll res = ask(mask);
if (prev.count(res)) {
cout << "YES\n";
prll(prev[res]);
cout << '\n';
prll(mask);
cout << endl;
return;
}
prev[res] = mask;
}
} else {
for (ll i=0; i<3000; i++) {
ll mask = rand(0, (1<<n)-1);
ll res = ask(mask);
if (prev.count(res)) {
cout << "YES\n";
prll(prev[res]);
cout << '\n';
prll(mask);
cout << endl;
return;
}
prev[res] = mask;
}
}
cout << "NO\n";
cout << endl;
}
int main() {
solve();
}