code: public static <T> void permuteCyclic(T[] array, T[] fill, int n) {
  		if (array.length != fill.length) throw new IllegalArgumentException("Lengths do not match");
  		if (n < 0) n = array.length + n;
  		while (n > array.length) {
  			n -= array.length;
  		}
  		for (int i = 0; i < array.length; i++) {
  			if (i + n < array.length) {
  				fill[i] = array[i + n];
  			} else {
  				fill[i] = array[i - array.length + n];
  			}
  		}
  	}
docs: Cyclically permute {@code array} <em>forward</em> by {@code n} elements.
  @param array The original result; will not be changed
  @param fill The permuted result will be filled into this array
  @param n The number of elements to permute by; can be positive or negative; values greater than the length of the array are acceptable