#include #include using namespace std; using namespace atcoder; typedef long long ll; #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) static const double pi = 3.141592653589793; const ll INF = 1LL << 60; const ll mod = 1000000007; const ll imod = 998244353; using mint = modint998244353; vector dx = {1, 0, -1, 0}, dy = {0, 1, 0, -1}; ll P(ll x, ll n) { ll ret = 1; while (n > 0) { if (n & 1) ret *= x; x *= x; n >>= 1; } return ret; } void seek(bool f){ cout << (f ? "Yes" : "No") << endl; } int main(){ int N, Q; cin >> N >> Q; vector A(N); rep(i, N){ cin >> A[i]; } map ma; vector B; int idx = 1; rep(i, N){ if(ma.find(A[i]) == ma.end()){ ma[A[i]] = idx; idx++; B.push_back(A[i]); } } int n = B.size(); if(n + N > Q){ cout << "No" << endl; } else{ cout << "Yes" << endl; rep(i, n){ cout << 1 << " " << i + 1 << " " << B[i] << endl; } rep(i, N){ cout << 2 << " " << ma[A[i]] << endl; } rep(i, Q - n - N){ cout << 1 << " " << 1 << " " << 1 << endl; } } }