#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e4+5;
int a[15],maxi;
bool vis[N];
int from[N];
queue<int>Q;
void print(int x,int dep) {
if (x==0) {
printf("%d\n",dep);
return ;
}
if (a[from[x]]<=x) {
print(x-a[from[x]],dep+2);
printf("1 %d\n3 %d %d\n",from[x],from[x],maxi);
} else {
print(x-a[from[x]]+a[maxi],dep+4);
printf("1 %d\n3 %d %d\n2 %d\n3 %d %d\n",from[x],from[x],maxi,maxi,from[x],maxi);
}
}
int main()
{
int n,A;
scanf("%d%d",&n,&A);
maxi = 1;
for (int i = 1;i<= n;i++)
{
scanf("%d",&a[i]);
if (a[i]>a[maxi])maxi = i;
}
vis[0] = true;
Q.push(0);
while (!Q.empty()) {
int x = Q.front();
Q.pop();
for (int i = 1;i<= n;i++)
if (!vis[(x+a[i])%a[maxi]]) {
vis[(x+a[i])%a[maxi]] = true;
from[(x+a[i])%a[maxi]] = i;
Q.push((x+a[i])%a[maxi]);
}
}
if (!vis[A]) {
if (A==a[maxi]) printf("1\n1 %d\n",maxi);
else printf("-1");
return 0;
}
print(A,0);
return 0;
}