>>587
#include <stdio.h>
typedef int T;
void swap(T* x, T* y) {T temp = *x; *x = *y; *y = temp;}
void arr_cycle(T* arr, unsigned int len) {
    unsigned int n = 1;
    T *first, *last;
    n = len - n % len;
    for(first = arr, last = arr + n; ; ) if (first == last || first == --last) break; else swap(first++, last);
    for(first = arr + n, last = arr + len; ; ) if (first == last || first == --last) break; else swap(first++, last);
    for(first = arr, last = arr + len; ; ) if (first == last || first == --last) break; else swap(first++, last);
}
void print_array(int* t, unsigned int n) {
    unsigned int i;
    for(i = 0; i < n; i++) printf("%d", t[i]);
    printf("\n");
}
int main(void) {
    int arr[] = {0,1,2,3};
    arr_cycle(arr, sizeof(arr) / sizeof(arr[0]));
    print_array(arr, sizeof(arr) / sizeof(arr[0]));
    return 0;
}