/*
一个有n个人的队伍,每次数数:一个官员从左往右数到第k个人,另一个官员从右往左数到第m个人,两人同时出列,若m==k,则只出一次;然后进行下一次数数
每数完一次,输出结果加','且输出结果占三个字节,不够补空格
*/
#include <stdio.h>
int main()
{
int k,m,n;
while(scanf("%d%d%d",&n,&k,&m)&&(n||k||m))
{
bool vis[32]={0};//标记编号是否访问
int i=1,j=n;//i表示从左往右的编号,j表示从右往左的编号
int left=0,right=0,count=0;//left为从左往右计数器,right为右往左计数器,count为已访问编号计数器
while(count!=n)
{
if(!vis[i]&&left!=k)//如果当前编号未被选过且从左往右未数完,则计数器left++
left++;
if(!vis[j]&&right!=m)//如果当前编号未被选过且从右往左未数完,则计数器right++
right++;
if(left==k&&right==m)//当两边计数完毕,开始输出
{
printf("%3d",i);
vis[i]=true;//标记该编号已访问
count++;
if(i!=j)//判断是否数到相同编号
{
printf("%3d",j);
vis[j]=true;
count++;
}
left=right=0;//计数器初始化
if(count!=n)
printf(",");
else
printf("\n");
}
if(left!=k)//若左往右未数完,则编号i++
i++;
if(right!=m)//若右往左未数完,则编号j--
j--;
if(i>n)
i=1;
if(j==0)
j=n;
}
}
return 0;
}