#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
int n,m,k,nl,nul,nlll;
int pos[maxn];
bool b[maxn];
int main()
{
std::ios::sync_with_stdio(0);
std::cin.tie(0);
cin>>n>>m>>k;
for(int i=1;i<=m;i++)
{
cin>>nl;
pos[i]=nl;
b[nl]=1;
}
int cnt=1;
for(int i=m+1;i<=n;cnt++)
{
if(b[cnt]==0)
{
pos[i]=cnt;
i++;
}
}
nul=m+1;
if(n-m>m*k||k>n-m)
{
cout<<"-1";
return 0;
}
for(nlll=1;nlll<=(n-m)/(k+1);nlll++)
{
cout<<pos[nlll]<<" "<<pos[nul]<<endl;
for(;nul<m+k*nlll;nul++)
cout<<pos[nul]<<" "<<pos[nul+1]<<endl;
cout<<pos[nul]<<" "<<pos[1]<<endl;
nul++;
}
nul--;
if(n-m-(k*(nlll-1))>0)
{
cout<<pos[nlll]<<" "<<pos[++nul]<<endl;
for(;nul<n;nul++)
cout<<pos[nul]<<" "<<pos[nul+1]<<endl;
cout<<pos[nul]<<" "<<pos[1]<<endl;
}
nlll++;
for(;nlll<=m;nlll++)
cout<<pos[nlll]<<" "<<pos[1]<<endl;
return 0;
}