#include <stdio.h>
#include <stdlib.h>

int va1_turn=2;
long va1_n;
int va1_st[101];
int va1_pp[101][12];

void va1_readdata(void)
{
  int i, j;
  FILE *fi=fopen("sticks.in", "r");

  fscanf(fi, "%d", &va1_n);
  for (i=1; i<=va1_n; fscanf(fi, "%d", va1_st+(i++)));
  fscanf(fi, "%d", &va1_turn);
  fclose(fi);

  for (i=1; i<=va1_n; i++)
    for (j=1; j<=va1_st[i]; va1_pp[i][j++]=1);
}

int va1_empty(void)
{
  int i, j;

  for (i=1; i<=va1_n; i++)
    for (j=1; j<=va1_st[i]; j++)
      if (va1_pp[i][j]==1) return 0;
  return 1;
}

void va1_eroare(char *s)
{
  puts(s);
  exit(1);
}

void putMove(int nr, int label1, int label2)
{
  int mm, nn, i, m;

  if (va1_turn==2)
    {
      va1_readdata();
      if (va1_turn==1) va1_eroare("Wrong player started the game");
    }
  if (va1_turn==1)
    va1_eroare("The other player's turn");
  va1_turn=1-va1_turn;

  if (nr<1 || nr>va1_n)
     va1_eroare("Invalid move");
  if (label1>label2 || label2<1 || label1>va1_st[nr])
     va1_eroare("Invalid move");
  if (label2-label1>2)
     va1_eroare("Invalid move");
  for (i=label1; i<=label2; i++)
    if (!va1_pp[nr][i]) va1_eroare("Invalid move");

  for (i=label1; i<=label2; i++)
      va1_pp[nr][i]=0;

  nn=label2-label1+1;
  m=0;
  i=label1;
  while (va1_pp[nr][i-1]==1)
    {
      i--; m++; nn++;
    }

  m=0;
  i=label2;
  while (va1_pp[nr][i+1]==1)
    {
      i++; m++; nn++;
    }

  if (va1_empty())
    {
       exit(0);
    }
}

void getMove(int *nr, int *label1, int *label2)
{
  int m, i, j, k, xxx, yyy, zzz;

  if (va1_turn==2)
    {
      va1_readdata();
      if (!va1_turn) va1_eroare("Wrong player started the game");
    }
  if (!va1_turn)
    va1_eroare("The other player's turn");
  va1_turn=1-va1_turn;

  for (k=1; k<=100; k++)
    {
      i=rand()%va1_n+1;
      j=random(va1_st[i])+1;
      if (va1_pp[i][j]==1)
	{
	  m=k=0;
	  while (va1_pp[i][j+k]==1)
	    { k++; m++; }
	  k=0;
	  while (va1_pp[i][j-k]==1)
	    { k++; m++; }
	  k=m-1;
	  va1_pp[i][j]=0;
	  *nr=i;
	  *label1=j;
	  *label2=j;
	  return;
	}
    }

  for (i=1; i<=va1_n; i++)
    for (j=1; j<=va1_st[i]; j++)
      if (va1_pp[i][j]==1)
	{
	  k=0;
	  while (va1_pp[i][j+k]==1) k++;
	  va1_pp[i][j]=0;

	  *nr=i;
	  *label1=j;
	  *label2=j;
	  return;
	}
}
