#include <iostream>
#include <stdio.h>
using namespace std;
typedef struct Node
{
int a,b;
struct Node *next;
} Node,*linklist;
void innilist(linklist &L)
{
L=new Node;
L->next=NULL;
}
void insert(int a1,int b1,Node *q) //在q后面插入结点。
{
Node *s=new Node;
s->a=a1;
s->b=b1;
s->next=q->next;
q->next=s;
}
void dislist(linklist &L) //输出L链表
{
int count =0;
Node *p1=L->next;
while(p1!=NULL)
{
cout <<p1->a<<"/"<<p1->b<<" ";
p1=p1->next;
count++;
}
cout <<"\nthe size of list is: "<<count<<endl;
}
void FareyList(int n){
linklist H;
Node*p;
innilist(H);
p=H;
insert(0,1,p);
p=p->next;
insert(1,1,p);
p=p->next;
if(n>1)
{
for(int i = 2;i<=n;i++){
p=H->next;
while(p->next){
if((p->b)+(p->next->b)<=n){
insert((p->a)+(p->next->a),(p->b)+(p->next->b),p);
p=p->next;
}
p=p->next;
}
}
}
dislist(H);
}
int main()
{
int n;
while(cin>>n&&n!=0)
{
FareyList(n);
}
return 0;
}
#include <stdio.h>
using namespace std;
typedef struct Node
{
int a,b;
struct Node *next;
} Node,*linklist;
void innilist(linklist &L)
{
L=new Node;
L->next=NULL;
}
void insert(int a1,int b1,Node *q) //在q后面插入结点。
{
Node *s=new Node;
s->a=a1;
s->b=b1;
s->next=q->next;
q->next=s;
}
void dislist(linklist &L) //输出L链表
{
int count =0;
Node *p1=L->next;
while(p1!=NULL)
{
cout <<p1->a<<"/"<<p1->b<<" ";
p1=p1->next;
count++;
}
cout <<"\nthe size of list is: "<<count<<endl;
}
void FareyList(int n){
linklist H;
Node*p;
innilist(H);
p=H;
insert(0,1,p);
p=p->next;
insert(1,1,p);
p=p->next;
if(n>1)
{
for(int i = 2;i<=n;i++){
p=H->next;
while(p->next){
if((p->b)+(p->next->b)<=n){
insert((p->a)+(p->next->a),(p->b)+(p->next->b),p);
p=p->next;
}
p=p->next;
}
}
}
dislist(H);
}
int main()
{
int n;
while(cin>>n&&n!=0)
{
FareyList(n);
}
return 0;
}