#include <bits/stdc++.h>
using namespace std;
bool is_palindrome(string a) {
  int i, j, k, l;
  l = a.size();
  k = l - 1;
  for (i = 0; i < l; i++) {
    if (a[i] != a[k]) {
      return false;
    }
    k--;
  }
  return true;
}
int main() {
  int i, j, k, l, m, n = 0, sz = 0;
  string a, b, c = "";
  vector<string> v;
  cin >> a >> k;
  l = a.size();
  m = l / k;
  if (l % k) {
    puts("NO");
    return 0;
  }
  for (i = 0; i < l; i += m) {
    b = "";
    sz = 0;
    for (j = i; sz < m; j++) {
      b += a[j];
      sz++;
    }
    if (is_palindrome(b)) {
      v.push_back(b);
    }
  }
  for (i = 0; i < v.size(); i++) {
    if (v[i].size() == m) {
      n++;
      c += v[i];
    }
  }
  if (n == k && c == a)
    puts("YES");
  else
    puts("NO");
  return 0;
}

### Prompt

Please provide a Cpp coded solution to the problem described below:

While Mike was walking in the subway, all the stuff in his back-bag dropped on the ground. There were several fax messages among them. He concatenated these strings in some order and now he has string s.

<image>

He is not sure if this is his own back-bag or someone else's. He remembered that there were exactly k messages in his own bag, each was a palindrome string and all those strings had the same length.

He asked you to help him and tell him if he has worn his own back-bag. Check if the given string s is a concatenation of k palindromes of the same length.

Input

The first line of input contains string s containing lowercase English letters (1 ≤ |s| ≤ 1000).

The second line contains integer k (1 ≤ k ≤ 1000).

Output

Print "YES"(without quotes) if he has worn his own back-bag or "NO"(without quotes) otherwise.

Examples

Input

saba
2


Output

NO


Input

saddastavvat
2


Output

YES

Note

Palindrome is a string reading the same forward and backward.

In the second sample, the faxes in his back-bag can be "saddas" and "tavvat".

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
bool is_palindrome(string a) {
  int i, j, k, l;
  l = a.size();
  k = l - 1;
  for (i = 0; i < l; i++) {
    if (a[i] != a[k]) {
      return false;
    }
    k--;
  }
  return true;
}
int main() {
  int i, j, k, l, m, n = 0, sz = 0;
  string a, b, c = "";
  vector<string> v;
  cin >> a >> k;
  l = a.size();
  m = l / k;
  if (l % k) {
    puts("NO");
    return 0;
  }
  for (i = 0; i < l; i += m) {
    b = "";
    sz = 0;
    for (j = i; sz < m; j++) {
      b += a[j];
      sz++;
    }
    if (is_palindrome(b)) {
      v.push_back(b);
    }
  }
  for (i = 0; i < v.size(); i++) {
    if (v[i].size() == m) {
      n++;
      c += v[i];
    }
  }
  if (n == k && c == a)
    puts("YES");
  else
    puts("NO");
  return 0;
}

```