#include <algorithm>
#include <array>
#include <cassert>
#include <chrono>
#include <cmath>
#include <cstring>
#include <functional>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <vector>
#include <stack>

using namespace std;
#define endl "\n"
#define int long long


#define mod1 1000000007
#define mod2 998244353
#define INF 100000000007
#define mx_val 1000043

vector<int> adj[mx_val];
bool visited[100005];
vector<int> val, ans;
int t = 1;

int parent[100005];
int siz[100005];

//void maker_set(int u){
//    parent[u] = u;
//    siz[u] = 1;
//}
//
//int find_set(int v) {
//    if (v == parent[v])
//        return v;
//    return parent[v] = find_set(parent[v]);
//}
//
//void union_sets(int a, int b) {
//    a = find_set(a);
//    b = find_set(b);
//    if (a != b) {
//        if (siz[a] < siz[b])
//            swap(a, b);
//        parent[b] = a;
//        siz[a] += siz[b];
//    }
//}

void dfs(int s){
    visited[s] = true;
    int count = val[s];
    for(auto &i : adj[s]){
        if(!visited[i]){
            count += val[i];
            dfs(i);
        }
    }
    if(!count)ans.push_back(s);
}

void test_case(){
    int x; cin >> x;
    int x1 = x % 11;
    int x2 = x / 11;
    if(x2 >= 10 * x1)cout << "YES" << endl;
    else cout << "NO" << endl;
}

signed main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    cin >> t;

    while (t--) {
        test_case();
    }
    return 0;
}

