#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
typedef long long int LI;
LI n,a[100005];
bool buffer[100005];
LI left,right,cnt;
char x[100005];
while(t--){
cnt=0;
fill(buffer,buffer+100005,false);
scanf("%lld",&n);
for(int i=1;i<=n;i++)
{
scanf("%s%lld",x,&a[i]);
if(!buffer[a[i]]&&a[i]>0&&a[i]<=n)
{
buffer[a[i]]=true;
a[i]=-1;
}
}
LI c1=-1,c2=-1;
for(int i=1;i<=n;i++)
{
if(a[i]!=-1&&a[i]>=1&&a[i]<=n)
{
LI left,right;
left=a[i];
right=a[i];
//printf("L=%lld\n",left);
while(true)
{
if(left==0)
{
break;
}
if(!buffer[left])
{
c1=(a[i]-left);
break;
}
left--;
}
while(true)
{
if(right==n+1)
{
break;
}
if(!buffer[right])
{
c2=(right-a[i]);
//printf("%lld",right);
break;
}
right++;
}
if(c1!=-1)
{
if(c2==-1)
{
buffer[left]=true;
cnt+=c1;
}
else if(c2!=-1)
{
if(c1<c2)
{
buffer[left]=true;
cnt+=c1;
}
else
{
buffer[right]=true;
cnt+=c2;
}
}
}
else if(c1==-1)
{
//printf("in");
if(c2!=-1)
{
buffer[right]=true;
cnt+=c2;
}
else
{
while(left>0&&left<=n&&!buffer[left])
left++;
if(left>0&&left<=n)
{
c1=a[i]-left;
}
while(right>0&&right<=n&&!buffer[right])
right--;
if(right>0&&right<=n)
c2=right-a[i];
}
}
}
else if(a[i]!=-1)
{
LI t1=a[i],t2=a[i];
LI cnt1=0;
int f=-1;
if(t1<=0)
{
while(t1<=0)
{
t1++;
cnt++;
}
while(buffer[t1])
{
t1++;
cnt1++;
}
if(t1<=n)
{
f=1;
buffer[t1]=true;
}
}
else
{
cnt1=0;
while(t2>n)
{
t2--;
cnt1++;
}
while(buffer[t2])
{
t2--;
cnt1++;
}
if(t2>0&&t2<=n)
{
f=2;
buffer[t2]=true;
}
}
if(f==1)
{
cnt+=cnt1;
continue;
}
else
{
cnt+=cnt1;
continue;
}
}
}
printf("%lld\n",cnt);
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8Y3N0ZGxpYj4KI2luY2x1ZGU8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbWFpbigpCnsKCWludCB0OwoJc2NhbmYoIiVkIiwmdCk7Cgl0eXBlZGVmIGxvbmcgbG9uZyBpbnQgTEk7CglMSSBuLGFbMTAwMDA1XTsKCWJvb2wgYnVmZmVyWzEwMDAwNV07CglMSSBsZWZ0LHJpZ2h0LGNudDsKCWNoYXIgeFsxMDAwMDVdOwoJd2hpbGUodC0tKXsKCQljbnQ9MDsKCQlmaWxsKGJ1ZmZlcixidWZmZXIrMTAwMDA1LGZhbHNlKTsKCQlzY2FuZigiJWxsZCIsJm4pOwoJZm9yKGludCBpPTE7aTw9bjtpKyspCgl7CgkJc2NhbmYoIiVzJWxsZCIseCwmYVtpXSk7CgkJaWYoIWJ1ZmZlclthW2ldXSYmYVtpXT4wJiZhW2ldPD1uKQoJCXsKCQlidWZmZXJbYVtpXV09dHJ1ZTsKCQlhW2ldPS0xOwoJCX0KCX0KTEkgYzE9LTEsYzI9LTE7Cglmb3IoaW50IGk9MTtpPD1uO2krKykKCXsKCQlpZihhW2ldIT0tMSYmYVtpXT49MSYmYVtpXTw9bikKCQl7CgkJCUxJIGxlZnQscmlnaHQ7CgkJCWxlZnQ9YVtpXTsKCQkJcmlnaHQ9YVtpXTsKCQkJLy9wcmludGYoIkw9JWxsZFxuIixsZWZ0KTsKCQkJd2hpbGUodHJ1ZSkKCQkJewoJCQkJaWYobGVmdD09MCkKCQkJCXsKCQkJCQlicmVhazsKCQkJCX0KCQkJCWlmKCFidWZmZXJbbGVmdF0pCgkJCQl7CgkJCQljMT0oYVtpXS1sZWZ0KTsKCQkJCWJyZWFrOwoJCQkJfQoJCQkJbGVmdC0tOwoJCQl9CgkJCXdoaWxlKHRydWUpCgkJCXsKCQkJCWlmKHJpZ2h0PT1uKzEpCgkJCQl7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCQlpZighYnVmZmVyW3JpZ2h0XSkKCQkJCXsKCQkJCQljMj0ocmlnaHQtYVtpXSk7CgkJCQkJLy9wcmludGYoIiVsbGQiLHJpZ2h0KTsKCQkJCQlicmVhazsKCQkJCX0KCQkJCXJpZ2h0Kys7CgkJCX0KCQkKCQoJaWYoYzEhPS0xKQoJewoJCWlmKGMyPT0tMSkKCQl7CgkJCWJ1ZmZlcltsZWZ0XT10cnVlOwoJCQljbnQrPWMxOwoJCX0KCQllbHNlIGlmKGMyIT0tMSkKCQl7CgkJCWlmKGMxPGMyKQoJCQl7CgkJCQlidWZmZXJbbGVmdF09dHJ1ZTsKCQkJCWNudCs9YzE7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlidWZmZXJbcmlnaHRdPXRydWU7CgkJCQljbnQrPWMyOwoJCQl9CgkJfQoJfQoJZWxzZSBpZihjMT09LTEpCgl7CgkJLy9wcmludGYoImluIik7CgkJaWYoYzIhPS0xKQoJCXsKCQkJYnVmZmVyW3JpZ2h0XT10cnVlOwoJCQljbnQrPWMyOwoJCX0KCQllbHNlCgkJewoJCQl3aGlsZShsZWZ0PjAmJmxlZnQ8PW4mJiFidWZmZXJbbGVmdF0pCgkJCWxlZnQrKzsKCQkJaWYobGVmdD4wJiZsZWZ0PD1uKQoJCQl7CgkJCQljMT1hW2ldLWxlZnQ7CgkJCX0KCQkJd2hpbGUocmlnaHQ+MCYmcmlnaHQ8PW4mJiFidWZmZXJbcmlnaHRdKQoJCQlyaWdodC0tOwoJCQlpZihyaWdodD4wJiZyaWdodDw9bikKCQkJYzI9cmlnaHQtYVtpXTsKCQkJCgkJfQoJCQoJfQoJfQoJZWxzZSBpZihhW2ldIT0tMSkKCXsKCQlMSSB0MT1hW2ldLHQyPWFbaV07CgkJTEkgY250MT0wOwoJCWludCBmPS0xOwoJCWlmKHQxPD0wKQoJCXsKCQkJd2hpbGUodDE8PTApCgkJCXsKCQkJCXQxKys7CgkJCQljbnQrKzsKCQkJfQoJCQl3aGlsZShidWZmZXJbdDFdKQoJCQl7CgkJCXQxKys7CgkJCWNudDErKzsKCQkJfQoJCQlpZih0MTw9bikKCQkJewoJCQlmPTE7CgkJCWJ1ZmZlclt0MV09dHJ1ZTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQljbnQxPTA7CgkJCXdoaWxlKHQyPm4pCgkJCXsKCQkJCXQyLS07CgkJCQljbnQxKys7CgkJCX0KCQkJd2hpbGUoYnVmZmVyW3QyXSkKCQkJewoJCQl0Mi0tOwoJCQljbnQxKys7CgkJCX0KCQkJaWYodDI+MCYmdDI8PW4pCgkJCXsKCQkJZj0yOwoJCQlidWZmZXJbdDJdPXRydWU7CgkJCX0KCQl9CgkJaWYoZj09MSkKCQl7CgkJY250Kz1jbnQxOwoJCWNvbnRpbnVlOwoJCX0KCQllbHNlCgkJewoJCQljbnQrPWNudDE7CgkJCWNvbnRpbnVlOwoJCX0KCQkKCX0KCX0KCXByaW50ZigiJWxsZFxuIixjbnQpOwoJfQoJCglyZXR1cm4gMDsKfQ==