Anna's got a birthday today. She invited many guests and cooked a huge (nearly infinite) birthday cake decorated by n banana circles of different sizes. Maria's birthday is about to start in 7 minutes too, and while Anna is older, she decided to play the boss a little. She told Maria to cut the cake by k straight-line cuts (the cutting lines can intersect) to divide banana circles into banana pieces. 

Anna has many guests and she wants everyone to get at least one banana piece. That's why she told Maria to make the total number of banana pieces maximum. It's not a problem if some banana pieces end up on the same cake piece — the key is to make the maximum number of banana pieces. Determine what result Maria will achieve.

Input

The first line contains two integers n and k — the number of banana circles and the number of cuts Maria should perform (1 ≤ n ≤ 1000, 1 ≤ k ≤ 105). Next n lines contain the positions and sizes of the banana circles (all banana circles are round). On the cake the Cartesian coordinate system is defined. Each line contains three integers x, y and r — the coordinates of the center of the corresponding banana piece and its radius ( - 1000 ≤ x, y ≤ 1000, 1 ≤ r ≤ 1000).

It is guaranteed that the banana circles do not intersect, do not touch each other and do not overlap with each other.

Pretest 10 is big test with n = k = 1000.

Output

Print the only integer — the largest number of banana pieces that Maria can get after she performs the k straight-line cuts.

Please do not use the %lld specificator to read or write 64-bit integers in C++. It is preferred to use the cin, cout streams or the %I64d specificator.

Examples

Input

1 1
0 0 1


Output

2


Input

3 1
0 0 1
3 0 1
6 0 1


Output

6


Input

1 3
0 0 1


Output

7
#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
int n, k, ans;
int x[N], y[N], R[N];
pair<double, int> q[N * 2];
double eps = 1e-10;
int calc(double ang) {
  double dx = sin(ang);
  double dy = cos(ang);
  int top = 0;
  for (int i = (int)(1); i <= (int)(n); i++) {
    double tmp = x[i] * dx + y[i] * dy;
    q[++top] = make_pair(tmp - R[i], 1);
    q[++top] = make_pair(tmp + R[i], -1);
  }
  sort(q + 1, q + top + 1);
  int sum = 0, mx = 0;
  for (int i = (int)(1); i <= (int)(top); i++) mx = max(mx, sum += q[i].second);
  return mx;
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = (int)(1); i <= (int)(n); i++)
    scanf("%d%d%d", &x[i], &y[i], &R[i]);
  double st = 0, ed = 2 * acos(-1), step = 0.0005;
  for (; step > eps;) {
    int mx = 0;
    double at;
    for (double i = st; i <= ed; i += step) {
      int vnow = calc(i);
      if (vnow > mx) mx = vnow, at = i;
    }
    ans = max(ans, mx);
    st = at - 5 * step;
    ed = at + 5 * step;
    step /= 5;
  }
  printf("%lld\n", 1ll * k * (k + 1) / 2 + n + 1ll * k * (ans - 1));
}
