#include<stdio.h>
#include<string.h>

// 並べ替え結果処理
void kekka_shori(int *d, int len)
{
    int i;

    for (i = 0; i < len; i++) {
        printf("%d", d[i]);
    }
    puts("");
}

// len個の配列の右n個を左にスライド
void narabe(int *d, int len, int n)
{
    int i, j;
    int tmp;

    if (n <= 1) {
        kekka_shori(d, len);
        return;
    }
    for (j = 0; j < n; j++) {
        narabe(d, len, n - 1);
        tmp = d[len - n];
        for (i = 0; i < n - 1; i++) {
            d[len - n + i] = d[len - n + i + 1];
        }
        d[len - n + i] = tmp;
    }
}

int main()
{
    int d[] = { 1, 2, 3 };

    narabe(d, 3, 3);
    return 0;
}