#include<stdio.h> int map[20][4]; typedef struct node{ int star; int end; }node; node dui[100]; int step[14]; int max=0; int sum; int cass; int N; int flag; void pan(int a[]) { flag=0; sum=0; int q=-1; int p=-1; for(int i=0;i<N;i++) { if(a[i]==0) { if(dui[i].star>=dui[q].end) { sum=sum+dui[i].end-dui[i].star; q=i; } else return; } else if(a[i]==1) { if(dui[i].star>=dui[p].end) { sum=sum+dui[i].end-dui[i].star; p=i; } else return; } } flag=1; }
void dfs(int a) { if(a==N) { pan(step); if(max<sum&&flag==1) max=sum; return; } for(int i=0;i<=2;i++) { step[a]=i; dfs(a+1); } } int main() { freopen("in.txt","r",stdin); scanf("%d",&cass); while(cass--) { scanf("%d",&N); node tmp; max=0; for(int i=0;i<N;i++) { for(int j=0;j<4;j++) { scanf("%d",&map[i][j]); } } for(int i=0;i<N;i++) { dui[i].star=map[i][0]*60+map[i][1]; dui[i].end=map[i][2]*60+map[i][3]; } for(int a=0;a<N-2;a++) { for(int b=0;b<N-2;b++) { if(dui[b].star>dui[b+1].star) { tmp=dui[b]; dui[b]=dui[b+1]; dui[b+1]=tmp; } } } dfs(0); printf("%d ",max); } return 0; }