#!/usr/bin/perl

open IN,"gier.debug";

$inblock = 0;
$n = 100000;

while($l = <IN>)
{
  chomp($l);
  if($inblock)
  {
    if($l =~ /^(\d{4}): \d \d{10} \d{10} \d{10} \d{10} \d{2}\s+(\d+) .*$/)
    {
      $index = $1;
      $value = $2;
      $block[$index] = $value;
#     print "block[$index]: $value\n";
    }
    else
    {
      $inblock=0;
      if($blocklen<4)
      {
	if($blocklen == 1 && $block[0] == 261788467200)
	{
	  if($write)
	  {
	    print "Write";
	  }
	  else
	  {
	    print "Read";
	  }
	  print " filemark on tape unit $tapeunit.\n";
	}
	else
	{
#	  print "BAD 1 $blocklen\n";
	}
	goto bad;
      }
      $down=0;
      $up=0;
      $jump=0;
      for($i=2; $i<$blocklen; $i+=2)
      {
	if($block[$i]+$block[$i+1] != ($n+1))
	{
# 	  print "BAD 2 $i $blocklen\n";
#	  goto bad;
	}
	if($i>=4)
	{
	  if(($block[$i]+1)==$block[$i-2])
	  {
	    $up++;
	  }
	  if(($block[$i]-1)==$block[$i-2])
	  {
	    $down++;
	  }
	  if(abs($block[$i]-$block[$i-2])>1)
	  {
	    $jump++;
	  }
	}
      }
      if($write)
      {
	print "Write";
      }
      else
      {
	print "Read";
      }
#     print " $blocklen words unit $tapeunit up: $up down: $down jump: $jump: ";
      print " $blocklen words unit $tapeunit: ";
      $first = -1;
      $last = -1;
      $direction = 0;
      $begin=1;

      for($i=2; $i<$blocklen; $i+=2)
      {
	$c = $block[$i];
	if($first == -1)
	{
	  $first = $c;
	  $last = $c;
	}
	elsif($direction == 0)
	{
	  if(($last+1) == $c)
	  {
	    $direction = 1;
	  }
	  elsif(($last-1) == $c)
	  {
	    $direction = -1;
	  }
	  else
	  {
	    if($begin)
	    {
	      $begin=0;
	    }
	    else
	    {
	      print ", ";
	    }
	    print "$last";
	    $first = $c;
	  }
	}
	else
	{
	  if(($last+$direction) != $c)
	  {
	    if($begin)
	    {
	      $begin=0;
	    }
	    else
	    {
	      print ", ";
	    }
	    print "$first ".(($direction==-1)?"downto":"to")." $last";
	    $first = $c;
	    $direction = 0;
	  }
	}
	$last = $c;
      }
      if($direction != 0)
      {
	if(!$begin)
	{
	  print ", ";
	}
	print "$first ".(($direction==-1)?"downto":"to")." $last";
      }
      print "\n";
bad:
    }
  }
  elsif($l =~ /^Tape block:$/)
  {
    $inblock=1;
#    print "BLOCK\n";
  }
  elsif($l =~ /^Write (\d+) word.*tape unit (\d)\./)
  {
    $blocklen = $1;
    $tapeunit = $2;
    $write=1;
#    print "WRITE $tapeunit\n";
  }
  elsif($l =~ /^Read (\d+) word.*tape unit (\d)\./)
  {
    $blocklen = $1;
    $tapeunit = $2;
    $write=0;
#    print "READ $tapeunit\n";
  }
  elsif($l =~ /^Backspace (\d+) block.*tape unit (\d)\./)
  {
    print "$l\n";
  }
  elsif($l =~ /^Backward to filemark.*tape unit (\d)\./)
  {
    print "$l\n";
  }
  elsif($l =~ /^Forward to filemark.*tape unit (\d)\./)
  {
    print "$l\n";
  }
  elsif($l =~ /^Rewind tape unit (\d)\./)
  {
    print "$l\n";
  }
}


