#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<iostream>
#include<vector>
using namespace std;
//守形数是这样一种整数,它的平方的低位部分等于它本身。
//比如25的平方是625,低位部分是25,因此25是一个守形数。 编一个程序,判断N是否为守形数。
//输入包括1个整数N,2<=N<100。
//可能有多组测试数据,对于每组数据, 输出"Yes!”表示N是守形数。 输出"No!”表示N不是守形数。
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
int sq = n * n;
vector<int> arr;
int k = 0;
while (sq > 10)
{
arr.push_back(sq % 10);
sq = sq / 10;
}
int num = arr.size();
int myNum = 0;
for (int i = num - 1; i >= 0; i--)
{
myNum = myNum * 10 + arr[i];
}
if (n == myNum)
{
printf("Yes!\n");
}
else
{
printf("No!\n");
}
}
return 0;
}