#include <iostream>
#include <vector>
#define F first
#define S second
#define MP make_pair
using namespace std;
int T;
int N;
const int M=5318008;
int k[5050][5050];
int d[5050][5050];
vector<int> l;
void add(int x, int y, int kk, int dd){
if (x<1 || y<1 || x>N || y>N) return;
if (d[x][y]<dd) return;
k[x][y]+=kk;
k[x][y]%=M;
if (d[x][y]!=dd){
d[x][y]=dd;
l.push_back(x|(y<<16));
}
}
int main(){
cin >> T;
for (int i=0; i<T; ++i){
cin >> N;
for (int i=1; i<=N; ++i) for (int j=1; j<=N; ++j){ k[i][j]=0;d[i][j]=1222333444;}
l.clear();
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
add(x1, y1, 1, 0);
for (int i=0; i<l.size(); ++i){
int x=l[i]&((1<<16)-1);
int y=l[i]>>16;
if (x==x2 && y==y2) break;
add(x-1, y-1, k[x][y], d[x][y]+1);
add(x-1, y, k[x][y], d[x][y]+1);
add(x-1, y+1, k[x][y], d[x][y]+1);
add(x, y-1, k[x][y], d[x][y]+1);
add(x, y+1, k[x][y], d[x][y]+1);
add(x+1, y-1, k[x][y], d[x][y]+1);
add(x+1, y, k[x][y], d[x][y]+1);
add(x+1, y+1, k[x][y], d[x][y]+1);
}
cout << k[x2][y2]<< "\n";
}
}