One cold winter evening Alice and her older brother Bob was sitting at home near the fireplace and giving each other interesting problems to solve. When it was Alice's turn, she told the number n to Bob and said:

—Shuffle the digits in this number in order to obtain the smallest possible number without leading zeroes.

—No problem! — said Bob and immediately gave her an answer.

Alice said a random number, so she doesn't know whether Bob's answer is correct. Help her to find this out, because impatient brother is waiting for the verdict.

Input

The first line contains one integer n (0 ≤ n ≤ 109) without leading zeroes. The second lines contains one integer m (0 ≤ m ≤ 109) — Bob's answer, possibly with leading zeroes.

Output

Print OK if Bob's answer is correct and WRONG_ANSWER otherwise.

Examples

Input

3310
1033


Output

OK


Input

4
5


Output

WRONG_ANSWER
#include <bits/stdc++.h>
using namespace std;
template <class T>
string tos(T x) {
  stringstream stringstream;
  stringstream << x;
  return stringstream.str();
}
void rot(vector<vector<int> > v, vector<vector<int> >& tmp, int r1, int c1,
         int r2, int c2) {
  tmp.resize(c2 - c1 + 1);
  int i, j;
  for (i = 0; i < tmp.size(); i++) tmp[i].resize(r2 - r1 + 1);
  for (i = r1; i <= r2; i++)
    for (j = c1; j <= c2; j++)
      tmp[j - c1][tmp[0].size() - (i - r1) - 1] = v[i][j];
}
bool isPal(string second) {
  int i = 0, j = second.size() - 1;
  while (i < j) {
    if (islower(second[i]) && islower(second[j]) && second[i] != second[j])
      return false;
    i++;
    j--;
  }
  return true;
}
bool* sieve(int n) {
  bool* prime = new bool[n + 1];
  int i;
  for (i = 0; i < n + 1; i++) prime[i] = true;
  prime[0] = false;
  prime[1] = false;
  int m = (int)sqrt(n);
  for (int i = 2; i <= m; i++)
    if (prime[i])
      for (int k = i * i; k <= n; k += i) prime[k] = false;
  return prime;
}
unsigned long long toD(int b, string second) {
  unsigned long long res = 0, tmp = 1;
  int i;
  int arr[256];
  for (i = 0; i < second.size(); i++) second[i] = tolower(second[i]);
  for (i = 0; i < 256; i++) arr[i] = i - 48;
  for (i = 'a'; i <= 'z'; i++) arr[i] = i - 'a' + 10;
  for (i = second.size() - 1; i >= 0; i--)
    res += arr[second[i]] * tmp, tmp *= b;
  return res;
}
string toB(int b, unsigned long long n) {
  string second = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", res;
  if (!n) return "0";
  while (n) {
    res.push_back(second[n % b]);
    n /= b;
  }
  reverse(res.begin(), res.end());
  return res;
}
int gcd(int a, int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
int lcm(int a, int b) { return a * b / gcd(a, b); }
int inf = 10000000;
void OK() {
  cout << "OK\n";
  exit(0);
}
void WA() {
  cout << "WRONG_ANSWER\n";
  exit(0);
}
int valid(string s1, string s2) {
  sort(s1.begin(), s1.end()), sort(s2.begin(), s2.end());
  return s1 == s2;
}
int main() {
  string s1, s2;
  cin >> s1 >> s2;
  if (!valid(s1, s2) || s2[0] == '0') WA();
  if (s1.size() == 1) OK();
  sort(s1.begin(), s1.end());
  do {
    if (s1[0] != '0' && s1 < s2) WA();
  } while (next_permutation(s1.begin(), s1.end()));
  OK();
  return 0;
}
