///////////////////////////////////////////////////////////////////////////////////////////////////////
//书上说用队列,就用队列,书上的代码,我真的一时半会儿,来不了,有点匪夷所思,不太符合,我的思考习惯
///////////////////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
#include <vector>

using namespace std;

queue<int> myQueue;
vector<int> out;//输出

int main()
{
    int n,p,m;
    scanf("%d %d %d",&n,&p,&m);

    int child[n+1];//标识,这个元素被没被删除

//     memset(child, 1, n+1);//用不了,不会用
    for(int i=1; i<n+1; ++i)
    {
        child[i]=0;
    }

    int k=0;//把n个元素都加入向量就停止循环
    for(int i=p; k<n; ++i)
    {
        if(i>n) //n%n=0,这是不对的
        {
            i=i%n;
        }

        if(myQueue.size()==m)
        {
            ++k;
            out.push_back(myQueue.back());
            child[myQueue.back()]=1;//删除的标识一下
            for(int j=0; j<m; ++j)
            {
                myQueue.pop();//满了就都弹出
            }
        }
        if(child[i]==0)
        {
            myQueue.push(i);
        }
    }
    for(int w=0; w<out.size(); ++w)
    {
        printf("%d",out[w]);
        if(w!=out.size()-1)
        {
            printf(",");
        }
    }
}