#include <algorithm>
#include <iostream>
#define N 100
#define M 16
#define BIT (1<<16)
using namespace std;
typedef long long ll;
typedef struct data{
  int m,l,s[M],e[M],bit;
} dat;

int main(){
  int n;
  ll ans,dp[BIT];
  dat d[N];
  while(1){
    cin>>n;
    if(!n) break;
    for(int i=0;i<n;i++){
      cin>>d[i].m>>d[i].l;
      d[i].bit=0;
      for(int j=0;j<d[i].m;j++){
	cin>>d[i].s[j]>>d[i].e[j];
	for(int k=d[i].s[j]-6;k<d[i].e[j]-6;k++) d[i].bit=d[i].bit|(1<<k);
      }      
    }
    for(int i=0;i<BIT;i++) dp[i]=-1;
    dp[0]=ans=0;
    for(int i=0;i<BIT;i++){
      if(dp[i]==-1) continue;
      for(int j=0;j<n;j++)
	if((i&d[j].bit)==0){
	  dp[i|d[j].bit]=max(dp[i|d[j].bit],dp[i]+d[j].l);
	  ans=max(ans,dp[i|d[j].bit]);
	}
    }
    cout<<ans<<endl;
  }
  return 0;
}