#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
#define maxn 200

int a[maxn],b[maxn];

struct Node{
	int dif;
	int idx;
}n[maxn];

bool cmp(Node a,Node b){
	return a.dif<b.dif;
}

struct node{
	int i,j;
};

vector<node>v;

int main(){
	int T;
	cin>>T;
	while(T--){
		int N;
		v.clear();
		cin>>N;
		int sum=0;
		int dif[maxn];
		for(int i=1;i<=N;i++){
			cin>>a[i];
		}for(int i=1;i<=N;i++){
			cin>>b[i];
			n[i].dif=b[i]-a[i];
			sum+=n[i].dif;
			n[i].idx=i;
		}
		if(sum){
			cout<<"-1"<<endl;
		}else{
			sort(n+1,n+N+1,cmp);
			node no; 
			int i,j;
			for(i=1,j=N;i<j;){
				no.i=n[i].idx,no.j=n[j].idx;
				if(n[i].dif<0&&n[j].dif){
					v.push_back(no);
					n[i].dif++,n[j].dif--;
				}
				if(n[i].dif==0){
					i++;
				}
				if(n[j].dif==0){
					j--;
				}
			}
			cout<<v.size()<<endl;
			for(vector<node>::iterator it=v.begin();it!=v.end();it++){
				node temp=*it;
				cout<<temp.i<<" "<<temp.j<<endl;
			}
		}
	}
}