#include <bits/stdc++.h>
const double eps = 1e-6;
using namespace std;
inline long long read() {
  char ch = getchar();
  long long s = 0, w = 1;
  while (ch < 48 || ch > 57) {
    if (ch == '-') w = -1;
    ch = getchar();
  }
  while (ch >= 48 && ch <= 57) {
    s = (s << 1) + (s << 3) + (ch ^ 48);
    ch = getchar();
  }
  return s * w;
}
inline void write(long long x) {
  if (x < 0) putchar('-'), x = -x;
  if (x > 9) write(x / 10);
  putchar(x % 10 + 48);
}
long long n, k, a[300005];
int main() {
  cin >> n >> k;
  long long sum = 0, minn = 2147483647;
  for (register long long i = 1; i <= n; i++)
    a[i] = read(), sum += a[i], minn = (a[i] < minn ? a[i] : minn);
  if (sum / k * k != sum) {
    return 0 * puts("No");
  } else {
    vector<long long> ans;
    long long temp = 0, tepcnt = 0;
    for (register long long i = 1; i <= n; i++) {
      temp += a[i], tepcnt++;
      if (temp == sum / k) {
        ans.push_back(tepcnt);
        temp = 0, tepcnt = 0;
      }
    }
    if (!ans.size()) {
      return 0 * puts("No");
    } else {
      cout << "Yes" << endl;
      for (auto it : ans) {
        cout << it << " ";
      }
    }
  }
  return 0;
}

### Prompt

Your challenge is to write a CPP solution to the following problem:

Polycarp took n videos, the duration of the i-th video is a_i seconds. The videos are listed in the chronological order, i.e. the 1-st video is the earliest, the 2-nd video is the next, ..., the n-th video is the last.

Now Polycarp wants to publish exactly k (1 ≤ k ≤ n) posts in Instabram. Each video should be a part of a single post. The posts should preserve the chronological order, it means that the first post should contain one or more of the earliest videos, the second post should contain a block (one or more videos) going next and so on. In other words, if the number of videos in the j-th post is s_j then:

  * s_1+s_2+...+s_k=n (s_i>0), 
  * the first post contains the videos: 1, 2, ..., s_1; 
  * the second post contains the videos: s_1+1, s_1+2, ..., s_1+s_2; 
  * the third post contains the videos: s_1+s_2+1, s_1+s_2+2, ..., s_1+s_2+s_3; 
  * ... 
  * the k-th post contains videos: n-s_k+1,n-s_k+2,...,n. 



Polycarp is a perfectionist, he wants the total duration of videos in each post to be the same.

Help Polycarp to find such positive integer values s_1, s_2, ..., s_k that satisfy all the conditions above.

Input

The first line contains two integers n and k (1 ≤ k ≤ n ≤ 10^5). The next line contains n positive integer numbers a_1, a_2, ..., a_n (1 ≤ a_i ≤ 10^4), where a_i is the duration of the i-th video.

Output

If solution exists, print "Yes" in the first line. Print k positive integers s_1, s_2, ..., s_k (s_1+s_2+...+s_k=n) in the second line. The total duration of videos in each post should be the same. It can be easily proven that the answer is unique (if it exists).

If there is no solution, print a single line "No".

Examples

Input

6 3
3 3 1 4 1 6


Output

Yes
2 3 1 

Input

3 3
1 1 1


Output

Yes
1 1 1 

Input

3 3
1 1 2


Output

No

Input

3 1
1 10 100


Output

Yes
3 

### Response

```cpp
#include <bits/stdc++.h>
const double eps = 1e-6;
using namespace std;
inline long long read() {
  char ch = getchar();
  long long s = 0, w = 1;
  while (ch < 48 || ch > 57) {
    if (ch == '-') w = -1;
    ch = getchar();
  }
  while (ch >= 48 && ch <= 57) {
    s = (s << 1) + (s << 3) + (ch ^ 48);
    ch = getchar();
  }
  return s * w;
}
inline void write(long long x) {
  if (x < 0) putchar('-'), x = -x;
  if (x > 9) write(x / 10);
  putchar(x % 10 + 48);
}
long long n, k, a[300005];
int main() {
  cin >> n >> k;
  long long sum = 0, minn = 2147483647;
  for (register long long i = 1; i <= n; i++)
    a[i] = read(), sum += a[i], minn = (a[i] < minn ? a[i] : minn);
  if (sum / k * k != sum) {
    return 0 * puts("No");
  } else {
    vector<long long> ans;
    long long temp = 0, tepcnt = 0;
    for (register long long i = 1; i <= n; i++) {
      temp += a[i], tepcnt++;
      if (temp == sum / k) {
        ans.push_back(tepcnt);
        temp = 0, tepcnt = 0;
      }
    }
    if (!ans.size()) {
      return 0 * puts("No");
    } else {
      cout << "Yes" << endl;
      for (auto it : ans) {
        cout << it << " ";
      }
    }
  }
  return 0;
}

```