En esta tarea he conseguido añadir al final de la lista principal (en mí código es cadenas) las primeras M strings, pero lo que no consigo es eliminarlas de la lista principal. He estado leyendo al respecto del método subList() y hay una cosa que me quedo claro pero que no se hace a la hora de ejecutar mi código y es que, se supone que al borrar los elementos del método subList() también se eliminarían de la lista principal (cadenas). Adjunto código para que podáis leerlo y darme alguna explicación, que se que estoy apunto de resolverlo y no quiero mirar la solución. Llevo atascado un par de días. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); //write your code here ArrayList<String> cadenas = new ArrayList<>(); int N = Integer.parseInt(reader.readLine()); // N es el numero de strings que se almacenarán en el ArrayList int M = Integer.parseInt(reader.readLine()); // M es el número de cadenas que voy a mover al final del ArrayList for(int i = 0; i < N; i++){ cadenas.add(reader.readLine()); } ArrayList<String> subCadenas = new ArrayList<>(cadenas.subList(0, M)); cadenas.addAll(subCadenas); subCadenas.clear(); // aquí se borran los elementos de la subList pero no de la lista principal (cadenas) for(String s: cadenas){ System.out.println(s); }