// precompute lookup table for each digit? 

#include <iostream>
#include <unordered_map>
#include <utility>
#include <algorithm>
using namespace std;

#define MP make_pair<int, int>

int main()
{
    unordered_map<int, int> lookup[10];
    lookup[1].insert(MP(0, 1));
    lookup[2].insert(MP(0, 2));
    lookup[2].insert(MP(1, 21));
    lookup[3].insert(MP(0, 3));
    lookup[3].insert(MP(1, 13));
    lookup[3].insert(MP(2, 23));
    lookup[4].insert(MP(0, 4));
    lookup[4].insert(MP(2, 14));
    lookup[4].insert(MP(1, 41));
    lookup[4].insert(MP(3, 43));
    lookup[5].insert(MP(0, 5));
    lookup[5].insert(MP(1, 51));
    lookup[5].insert(MP(2, 52));
    lookup[5].insert(MP(3, 53));
    lookup[5].insert(MP(4, 54));
    lookup[6].insert(MP(0, 6));
    lookup[6].insert(MP(4, 16));
    lookup[6].insert(MP(2, 26));
    lookup[6].insert(MP(1, 61));
    lookup[6].insert(MP(3, 63));
    lookup[6].insert(MP(5, 65));
    lookup[7].insert(MP(0, 7));
    lookup[7].insert(MP(3, 17));
    lookup[7].insert(MP(6, 27));
    lookup[7].insert(MP(2, 37));
    lookup[7].insert(MP(5, 47));
    lookup[7].insert(MP(1, 57));
    lookup[7].insert(MP(4, 67));
    lookup[8].insert(MP(0, 8));
    lookup[8].insert(MP(2, 18));
    lookup[8].insert(MP(4, 28));
    lookup[8].insert(MP(6, 38));
    lookup[8].insert(MP(1, 81));
    lookup[8].insert(MP(3, 83));
    lookup[8].insert(MP(5, 85));
    lookup[8].insert(MP(7, 87));
    lookup[9].insert(MP(0, 9));
    lookup[9].insert(MP(1, 19));
    lookup[9].insert(MP(2, 29));
    lookup[9].insert(MP(3, 39));
    lookup[9].insert(MP(4, 49));
    lookup[9].insert(MP(5, 59));
    lookup[9].insert(MP(6, 69));
    lookup[9].insert(MP(7, 79));
    lookup[9].insert(MP(8, 89));
    int t; cin >> t;
    while (t--) {
        int q, d; cin >> q >> d;
        for (int i = 0; i < q; ++i) {
            int x; cin >> x;
            int mod = x % d;
            if (lookup[d].at(mod) <= x) cout << "YES" << endl;
            else cout << "NO" << endl;
        }
    }
}