#include <bits/stdc++.h>
using namespace std;
template <class T1>
void write(T1 e) {
  cout << e << endl;
}
template <class T1, class T2>
void write(T1 e1, T2 e2) {
  cout << e1 << " " << e2 << endl;
}
template <class T1, class T2, class T3>
void write(T1 e1, T2 e2, T3 e3) {
  cout << e1 << " " << e2 << " " << e3 << endl;
}
int dx[] = {-1, -1, -1, 0, 0, 1, 1, 1};
int dy[] = {-1, 0, 1, -1, 1, -1, 0, 1};
int dx4[] = {0, 1, 0, -1};
int dy4[] = {-1, 0, 1, 0};
bool isvowel(char ch) {
  ch = tolower(ch);
  return ch == 'a' or ch == 'e' or ch == 'i' or ch == 'o' or ch == 'u';
}
struct myStruct {
  long long int Sum;
  string name;
  string Party;
};
bool cmp(myStruct a, myStruct b) { return a.Sum > b.Sum ? 0 : 1; }
map<char, int> Mp;
void Method() {
  int j = 0;
  for (char i = 'a'; i <= 'z'; i++) {
    char temp = (char)i;
    Mp[temp] = j;
    j++;
  }
}
int main() {
  string A, B;
  while (cin >> A >> B) {
    string temp = A + B;
    long long int N = atoll(temp.c_str());
    ;
    long long int ans = (long long int)sqrt(N);
    if (ans * ans == N)
      write("Yes");
    else
      write("No");
  }
}
