#include
int n = 500000000, i;
int arr[100000];
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
int partition (int arr[], int low, int high) {
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high- 1; j++) {
if (arr[j] <= pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void qSort(int arr[], int l, int h) {
if (l < h) {
int pi = partition(arr, l, h);
qSort(arr, l, pi - 1);
qSort(arr, pi + 1, h);
}
}
void sJo(int div){
arr[i++] = div;
if(div > n){
return;
}else{
return sJo(div*10+7), sJo(div*10+8);
}
}
int main(){
int tc;
sJo(7);
sJo(8);
qSort(arr, 0, 1021);
scanf("%d",&tc);
for(int i=1;i<=tc;i++){
int num;
bool flag = false;
scanf("%d",&num);
if(num==7 || num==8){
printf("Case #%d: YES\n", i);
continue;
}
for(int j=0;j<1022;j++){
if(arr[j]>num/2){
flag = true;
break;
}
if(num%arr[j]==0){
printf("Case #%d: YES\n", i);
break;
}
}
if(flag){
printf("Case #%d: NO\n", i);
}
}
return 0;
}