
#include <stdio.h>

#define MAX_VRHOVA 100

int broj_vrhova,broj_bridova;
int graf[MAX_VRHOVA][MAX_VRHOVA];
int grupa[MAX_VRHOVA];

void ucitaj_podatke(void)
{
  int i,j;
  int prvi_vrh,drugi_vrh,vrijednost;
  FILE *fp;

  fp = fopen("SRECA.IN","rt");

  fscanf(fp,"%d",&broj_vrhova);

  broj_bridova = broj_vrhova * (broj_vrhova - 1) / 2;

  for (i = 0;i < broj_vrhova;++i)
    for (j = 0;j < broj_vrhova;++j)
      graf[i][j] = 0;

  for (i = 0;i < broj_bridova;++i)
  {
    fscanf(fp,"%d%d%d",&prvi_vrh,&drugi_vrh,&vrijednost);
    graf[prvi_vrh - 1][drugi_vrh - 1] = vrijednost;
    graf[drugi_vrh - 1][prvi_vrh - 1] = vrijednost;
  }

  fclose(fp);
}

void rijesi(void)
{
  int i,j;
  int promjena;
  int sreca[MAX_VRHOVA];

  for (i = 0;i < broj_vrhova;++i)
    grupa[i] = 1;

  do
  {
    for (i = 0;i < broj_vrhova;++i)
    {
      sreca[i] = 0;

      for (j = 0;j < broj_vrhova;++j)
        sreca[i] += graf[i][j] * grupa[j];

      sreca[i] *= grupa[i];
    }

    promjena = -1;

    for (i = 0;i < broj_vrhova;++i)
      if (sreca[i] < 0)
      {
        promjena = i;
        break;
      }

    if (promjena == -1)
      break;

    grupa[promjena] = -grupa[promjena];
  } while (1);

}

void zapisi_rjesenje(void)
{
  int i;
  FILE *fp;

  fp = fopen("SRECA.OUT","wt");

  fprintf(fp,"%d\n",broj_vrhova);

  for (i = 0;i < broj_vrhova;++i)
    fprintf(fp,"%d\n",(grupa[i] == 1) ? 1 : 2);

  fclose(fp);
}

int main(void)
{
  ucitaj_podatke();
  rijesi();
  zapisi_rjesenje();

  return 0;
}
