public class Backtrack_row{

 //Fields 

   public int row_number;   
   public String derivation;
   public int rule_number;   
   public int word_number; 
 
//Constructor

   public Backtrack_row(int row_number, String derivation, int rule_number, int word_number){
        
      this.row_number  = row_number;         
      this.derivation = derivation;
      this.rule_number = rule_number;
      this.word_number = word_number;   
   }

 //Methods 
    
    public String toString(){
          String step=new String(String.valueOf(row_number));
          //add the needed amount of blanks
          while(step.length()<7){
                step+=" ";
          }          

          String deriv=new String(" "+derivation);
          //add the needed amount of blanks
          while(deriv.length()<13){
                deriv+=" ";
          }
      
          String nextrule=new String("next rule R-"+String.valueOf(rule_number+1));
          //add the needed amount of blanks
          while(nextrule.length()<17){
                nextrule+=" ";
          }

          String position=new String("P:"+String.valueOf(word_number));       
      
          return step+deriv+nextrule+position;       

 //         return String.valueOf(row_number)+" "+
 //                derivation+" "+
 //                "next rule R-"+ String.valueOf(rule_number+1)+" "+"P:"+
 //                String.valueOf(word_number);
    }
   
}    