/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
private static int defaultStep = 2;
private static int defaultIndex = defaultStep;
List
<Integer
> list
= new ArrayList
<>(Arrays.
asList(1,
2,
3,
4,
5)); List<Integer> result = reformatList(list, defaultIndex);
System.
out.
println("result: " + result
); }
static List<Integer> reformatList(List<Integer> list, int idx) {
//System.out.println("Size: " + list.size() + ", index: " + idx);
int listSize = list.size();
if (idx > listSize)
return reformatList(list, idx - listSize);
List<Integer> newList = new ArrayList<>();
if (idx == 0) {
newList.addAll(list.subList(idx + 1, listSize));
}
if (idx != 0) {
newList.addAll(list.subList(idx, listSize));
newList.addAll(list.subList(0, idx - 1));
}
int newListSize = newList.size();
if (newListSize > 1) {
idx = (newListSize < defaultStep) ? defaultStep - newListSize : defaultStep;
return reformatList(newList, idx);
}
return newList;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lIHsKCQoJcHJpdmF0ZSBzdGF0aWMgaW50IGRlZmF1bHRTdGVwID0gMjsKICAgIHByaXZhdGUgc3RhdGljIGludCBkZWZhdWx0SW5kZXggPSBkZWZhdWx0U3RlcDsKCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uIHsKICAgICAgICBMaXN0PEludGVnZXI+IGxpc3Q9IG5ldyBBcnJheUxpc3Q8PihBcnJheXMuYXNMaXN0KDEsIDIsIDMsIDQsIDUpKTsKICAgICAgICBMaXN0PEludGVnZXI+IHJlc3VsdCA9IHJlZm9ybWF0TGlzdChsaXN0LCBkZWZhdWx0SW5kZXgpOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInJlc3VsdDogIiArIHJlc3VsdCk7CiAgICB9CgoKICAgIHN0YXRpYyBMaXN0PEludGVnZXI+IHJlZm9ybWF0TGlzdChMaXN0PEludGVnZXI+IGxpc3QsIGludCBpZHgpIHsKICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiU2l6ZTogIiArIGxpc3Quc2l6ZSgpICsgIiwgaW5kZXg6ICIgKyBpZHgpOwogICAgICAgIGludCBsaXN0U2l6ZSA9IGxpc3Quc2l6ZSgpOwogICAgICAgIGlmIChpZHggPiBsaXN0U2l6ZSkKICAgICAgICAgICAgcmV0dXJuIHJlZm9ybWF0TGlzdChsaXN0LCBpZHggLSBsaXN0U2l6ZSk7CgogICAgICAgIExpc3Q8SW50ZWdlcj4gbmV3TGlzdCA9IG5ldyBBcnJheUxpc3Q8PigpOwoKICAgICAgICBpZiAoaWR4ID09IDApIHsKICAgICAgICAgICAgbmV3TGlzdC5hZGRBbGwobGlzdC5zdWJMaXN0KGlkeCArIDEsIGxpc3RTaXplKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaWR4ICE9IDApIHsKICAgICAgICAgICAgbmV3TGlzdC5hZGRBbGwobGlzdC5zdWJMaXN0KGlkeCwgbGlzdFNpemUpKTsKICAgICAgICAgICAgbmV3TGlzdC5hZGRBbGwobGlzdC5zdWJMaXN0KDAsIGlkeCAtIDEpKTsKICAgICAgICB9CgogICAgICAgIGludCBuZXdMaXN0U2l6ZSA9IG5ld0xpc3Quc2l6ZSgpOwogICAgICAgIGlmIChuZXdMaXN0U2l6ZSA+IDEpIHsKICAgICAgICAgICAgaWR4ID0gKG5ld0xpc3RTaXplIDwgZGVmYXVsdFN0ZXApID8gZGVmYXVsdFN0ZXAgLSBuZXdMaXN0U2l6ZSA6IGRlZmF1bHRTdGVwOwogICAgICAgICAgICByZXR1cm4gcmVmb3JtYXRMaXN0KG5ld0xpc3QsIGlkeCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3TGlzdDsKICAgIH0KfQ==