void init() {
   state = new int[field.getSize()][6];
   for (int i = 0; i < state.length; i++) {
     for (int j = 0; j < 6; j++) state[i][j] = -1;
   }
   figureUsage = new int[FIGURES.length];
   place = new int[FIGURES.length + 1];
   wayCount = new int[FIGURES.length + 1];
   way = new int[FIGURES.length + 1];
   waysF = new int[FIGURES.length + 1][FIGURES.length * 6];
   waysD = new int[FIGURES.length + 1][FIGURES.length * 6];
   t = 0;
 }
 int getNextPlace() {
   int p = (t == 0) ? 0 : place[t - 1] + 1;
   while (p < field.getSize() && form[p] == 0) ++p;
   return p >= field.getSize() ? -1 : p;
 }