package work;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class OpenDoorMy {
static int T, N, mind;
static int[] gate;
static int[] peo;
static boolean[] used;
static int[] num;
public static void main(String[] args) throws FileNotFoundException {
/* Scanner sc=new Scanner(System.in); */
Scanner sc = new Scanner(new File("src/Aboat.txt"));
T = sc.nextInt();
for (int t = 0; t < T; t++) {
N = sc.nextInt();
gate = new int[3];
peo = new int[20];
used = new boolean[3];
num = new int[N + 1];
for (int i = 0; i < 3; i++) {
gate[i] = sc.nextInt();
peo[i] = sc.nextInt();
}
mind = 0xfffffff;
dfs(0, 0);
System.out.println(mind);
}
}
private static void dfs(int step, int sum) {
if (step == 3) {
if (mind > sum) {
mind = sum;
}
return;
}
if (sum > mind) {
return;
}
for (int i = 0; i < 3; i++) {
if (!used[i]) {
used[i] = true;
if (i == 0) {
dfs(step + 1, sum + enterleft(i));
init(i);
}
if (i == 1) {
dfs(step + 1, sum + enterleft(i));
init(i);
dfs(step + 1, sum + enterright(i));
init(i);
}
if (i == 2) {
dfs(step + 1, sum + enterright(i));
init(i);
}
used[i] = false;
}
}
}
private static int enterleft(int p) {
int count = 0;
int gatepos = gate[p];
int dis = 0;
for (int i = peo[p]; i > 0;) {
if (gatepos - dis > 0 && num[gatepos - dis] == 0) {
num[gatepos - dis] = -p - 1;
i--;
count += dis + 1;
}
if (i == 0) {
break;
}
if (gatepos + dis <= N && num[gatepos + dis] == 0) {
num[gatepos + dis] = -p - 1;
i--;
count += dis + 1;
}
dis++;
}
return count;
}
private static int enterright(int p) {
int count = 0;
int gatepos = gate[p];
int dis = 0;
for (int i = peo[p]; i >0;) {
if (gatepos + dis <= N && num[gatepos + dis] == 0) {
num[gatepos + dis] = -p - 1;
i--;
count += dis + 1;
}
if (i == 0) {
break;
}
if (gatepos - dis > 0 && num[gatepos - dis] == 0) {
num[gatepos - dis] = -p - 1;
i--;
count += dis + 1;
}
dis++;
}
return count;
}
private static void init(int p) {
for (int i = 1; i < num.length; i++) {
if(num[i]==-p-1){num[i]=0;}
}
}
}
、。input
1
10
4 5
6 2
10 2
、、output
18