public class DFSA {
  
  private int state = 0; // current state
  private int[] F; // set of accepting states
  private int[][] delta; // transition table
  
  public DFSA(int[] F, int[][] delta) {
    this.F = F;
    this.delta = delta;
  }
  
  public void reset() {
    state = 0; // always start at state 0
  }
  
  public void classify(String s) {
    System.out.print(state + " ");
    for (int i = 0; i < s.length(); ++i) {
      state = delta[state][Integer.parseInt(s.substring(i,i+1))];
      System.out.print(state + " ");
    }
    
    for (int i = 0; i < F.length; ++i) {
      if (state == F[i]) {
        System.out.println("\nAccept");
        return;
      }
    }
    System.out.println("\nReject");
  }
  
}