Здравствуйте. Не могу разобраться, почему мы использовали именно эту конструкцию. Ясно, почему add и remove, но не ясна комбинация в скобках.
list.add(0,list.get((list.size() - 1)));
 list.remove((list.size() - 1));
Объясните ее, пожалуйста. И еще непонятно, почему сначала add, а потом remove. В условии сказано, сначала удалить строку, и только потом ее вставить в начало списка. Спасибо! Не хочется идти дальше, не разобравшись досконально что к чему.
public class Solution {
    public static void main(String[] args) throws Exception {
      BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
      ArrayList<String>list = new ArrayList<>();

      for (int i = 0; i < 5; i++){
          String s = reader.readLine();
          list.add(s);
        }
        for (int i= 0; i< 13; i++) {
            list.add(0,list.get((list.size() - 1)));
            list.remove((list.size() - 1));
      }
      for (int i = 0; i < 5; i++){
          System.out.println(list.get(i));
      }




    }
}