{ $define REDIRECT}

{$inline on}

const MAXN=100;

type TVol=record
            x_min,x_max,y_min,y_max,z_min,z_max:Int64;
          end;

var N:integer;
    mass:array[1..MAXN] of TVol;


function min(x,y:Int64):Int64; inline;
Begin
  if x<y then min:=x else min:=y
End;

function max(x,y:Int64):Int64; inline;
Begin
  if x>y then max:=x else max:=y
End;

procedure make_min_max(var a,b:Int64); inline;
var t:Int64;
Begin
  if a>b then begin
    t:=a;
    a:=b;
    b:=t
  end
End;

procedure ReadData;
var the_x_min, the_y_min, the_z_min, the_x_max, the_y_max, the_z_max : LONGINT;
    i:integer;
Begin
  read(N);
  for i:=1 to N do begin
    read(the_x_min, the_y_min, the_z_min,
         the_x_max, the_y_max, the_z_max);
    mass[i].x_min:=the_x_min; mass[i].x_max:=the_x_max;
    mass[i].y_min:=the_y_min; mass[i].y_max:=the_y_max;
    mass[i].z_min:=the_z_min; mass[i].z_max:=the_z_max;

    make_min_max(mass[i].x_min,mass[i].x_max);
    make_min_max(mass[i].y_min,mass[i].y_max);
    make_min_max(mass[i].z_min,mass[i].z_max);
  end;
End;

function IsectVol(const v1,v2:TVol):TVol; inline;
var res:TVol;
Begin
  res.x_min:=max(v1.x_min,v2.x_min);
  res.x_max:=min(v1.x_max,v2.x_max);
  res.y_min:=max(v1.y_min,v2.y_min);
  res.y_max:=min(v1.y_max,v2.y_max);
  res.z_min:=max(v1.z_min,v2.z_min);
  res.z_max:=min(v1.z_max,v2.z_max);
  IsectVol:=res;
End;

function IsEmpty(const v:TVol):boolean; inline;
Begin
  IsEmpty:=(v.x_min>=v.x_max)or(v.y_min>=v.y_max)or(v.z_min>=v.z_max);
End;

function EvalSimpleMeasure(const v:TVol):Int64; inline;
Begin
  EvalSimpleMeasure:=(v.x_max-v.x_min)*(v.y_max-v.y_min)*(v.z_max-v.z_min);
End;

function CountM(X:TVol; i:integer):Int64;
var j:integer;
    res:Int64;
Begin
  if IsEmpty(X) then begin            (* якщо множина порожня, то *)
    CountM:=0; exit    (* порожнi будуть i подальшi перетини *)
  end;
  res:=EvalSimpleMeasure(X);                     (* рахуємо мiру сам\'ої множин\'и *)
  for j:=i+1 to N do (* вiднiмаємо перетини з ``подальшими'' *)
    res:=res-CountM(IsectVol(X,mass[j]), j);                (* множинами *)
  CountM:=res;
End;

var i:integer;
    result:Int64;

BEGIN
{$ifdef REDIRECT}
  assign( input,'areaplus.dat');   reset( input);
  assign(output,'areaplus.sol'); rewrite(output);
{$endif}

  ReadData;

  result:=0;
  for i:=1 to N do
    result:=result+CountM(mass[i],i);

  writeln(result);
{$ifdef REDIRECT}
  close( input);
  close(output);
{$endif}
END.
