/* -*- coding: utf-8 -*- * * 1523.cc: No.1523 +/- Tree - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ /* typedef */ /* global variables */ /* subroutines */ inline void pedge(int i, int j, int w) { printf("%d %d %d\n", i + 1, j + 1, w); } /* main */ int main() { int n, k; scanf("%d%d", &n, &k); if (k <= 1 || k >= n - 1) puts("No"); else if (k == 2) { if (n & 1) puts("No"); else { puts("Yes"); for (int i = 0; i + 1 < n; i++) pedge(i, i + 1, (i & 1) ? -(n + 1) : n); } } else if (k == 3) { if ((n - 1) % 3 != 0) { int wts[3] = { n, 0, -(n + 1) }; puts("Yes"); for (int i = 0; i + 1 < n; i++) pedge(i, i + 1, wts[i % 3]); } else if (n >= 6) { puts("Yes"); pedge(0, 1, -2); pedge(1, 2, 0); for (int i = 3; i < n; i++) pedge(2, i, 1); } else puts("No"); } else { // k >= 4 puts("Yes"); for (int i = 0; i < k; i++) pedge(i, i + 1, (i == 0) ? -1 : 0); for (int i = k + 1; i < n; i++) pedge(2, i, 2); } return 0; }