#include #include using namespace std; long long int LMINF = -1e18; long long int modint = 1000000007; int main() { int row = 0; int n,q; cin >> n >> q; vector X(n); set S; for(int i = 0; i < n; i++){ cin >> X[i]; S.insert(X[i]); } if(q < (int)S.size()+n){ cout << "No"; return 0; } else { cout << "Yes" << endl; } vector A; int v; while(!S.empty()){ v = *begin(S); A.push_back(v); cout << 1 << " " << (int)A.size() << " " << v << endl; row++; S.erase(v); } int minidx,maxidx; int search; for(int i = 0; i < n; i++){ minidx = 0; maxidx = (int)A.size()-1; while(true){ search = (minidx+maxidx)/2; if(A[search] < X[i]){ minidx = search+1; } else if(A[search] > X[i]){ maxidx = search; } else { cout << 2 << " " << search+1 << endl; row++; break; } } } while(row < q){ cout << 1 << " " << 1 << " " << 1 << endl; row++; } }