#include #include using namespace std; using ll = long long; #define rep(i, s, t) for (ll i = s; i < (ll)(t); i++) #define all(x) begin(x), end(x) template bool chmin(T& x, T y) { return x > y ? (x = y, true) : false; } template bool chmax(T& x, T y) { return x < y ? (x = y, true) : false; } struct IOST { IOST() { ios::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(20); } } IOST; using mint = atcoder::modint998244353; void solve() { int n, q; cin >> n >> q; vector x(n); rep(i, 0, n) cin >> x[i]; map mp, rmp; mp[1] = 0; rmp[0] = 1; int ct = 1; vector> ans; rep(i, 0, n) { if (rmp.count(x[i])) { ans.push_back({-1, rmp[x[i]]}); } else { mp[++ct] = x[i]; rmp[x[i]] = ct; ans.push_back({ct, x[i]}); ans.push_back({-1, ct}); } } while ((int)ans.size() < q) ans.push_back({1, 1}); if ((int)ans.size() > q) cout << "No\n"; else { cout << "Yes\n"; for (auto [a, b] : ans) { if (a == -1) cout << "2 " << b << "\n"; else cout << "1 " << a << " " << b << "\n"; } } } int main() { int t = 1; // cin>>t; rep(i, 0, t) solve(); }