#include <stdio.h>
#include "genlib.h"
#include "simpio.h"

#define NMAX 1000

void empurre(int a[], int i, int n);
int farey(int n, int a[], int b[]);

int main()
{
  int n;
  int n_termos;
  int i;
  int num[NMAX]={0, 1}, denom[NMAX]={1, 1};

  printf("n = ");
  n=GetInteger();
  
  n_termos=farey(n, num, denom);

  for (i=0; i<n_termos; i++)
    printf("%3d: %d/%d\n", i, num[i], denom[i]);
    
  return 0;
}

void empurre(int a[], int i, int n)
{
  int k;
  
  for (k=n-1; k>=i; k--) 
    a[k+1]=a[k];
}

int farey(int n, int a[], int b[])
{
  int i;
  int nn=2;
  
  for (i=0; i<nn-1; i++) 
    while (b[i]+b[i+1]<=n) {
      empurre(a, i+1, nn);
      empurre(b, i+1, nn);
      nn++;
      a[i+1]=a[i]+a[i+2];
      b[i+1]=b[i]+b[i+2];
    }

  return nn;
}
