#include <bits/stdc++.h> using namespace std; typedef long long ll; int cnt=0; ll addone(ll n) { ll res = 0; ll carry = 0; ll factor = 1; if (n == 0) return 1; while (n > 0 || carry > 0) { ll digit = n % 10 + 1 + carry; carry = digit / 10; digit %= 10; res += digit * factor; factor *= 10; n /= 10; } //cout<<"=="<<res<<endl; return res; } bool judge(ll n, ll m) { if (n == m) return true; unordered_set<ll> visited; queue<int> q; q.push(n); visited.insert(n); for (int i = 0; i < 32 && !q.empty(); ++i) { int levelSize = q.size(); for (int j = 0; j < levelSize; ++j) { int curr = q.front(); q.pop(); vector<ll> nextNums = {addone(curr), curr / 2}; for (ll next : nextNums) { if (next == m) return true; if (visited.find(next) == visited.end()) { q.push(next); visited.insert(next); } } } } return false; } int main(){ ll n, q; cin >> n >> q; for(int i = 0; i < q; i++){ ll m; cin >> m; cnt = 0; if(judge(n, m) == true) cout << "YES" << endl; else cout << "NO" << endl; } return 0; }