#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#include<string>#include<queue>#include<stack>#include<map>#include<set>#include<stdlib.h>#include<vector>#define inff 0x3fffffff#define nn 110000#define mod 1000000007typedef long long LL;const LL inf64=inff*(LL)inff;using namespace std;int n;int a[nn];vector<pair<int,int> >ans;int gcd(int x,int y){ if(y==0) return x; return gcd(y,x%y);}int main(){ int i; int cas=1; while(scanf("%d",&n)!=EOF) { ans.clear(); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } int ix=a[1]; int id=1; if(ix!=1) { for(i=2;i<=n;i++) { ix=gcd(ix,a[i]); ans.push_back(make_pair(i-1,i)); if(ix==1) { id=i; break; } } } printf("Case %d: ",cas++); if(ix!=1) { puts("-1"); } else { for(i=1;i<=n;i++) { if(i==id) continue; if(i<id) ans.push_back(make_pair(i,id)); else ans.push_back(make_pair(id,i)); } int la=ans.size(); printf("%dn",la); for(i=0;i<la;i++) { printf("%d %dn",ans[i].first,ans[i].second); } } puts(""); } return 0;}