What is wrong here?

package com.codegym.task.task07.task0713;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/*
Playing Javarella
1. Enter 20 numbers from the keyboard, save them in a list, and then sort them to three other lists:
Numbers divisible by 3 (x%3==0), numbers divisible by 2 (x%2==0), and all other numbers.
Numbers simultaneously divisible by 3 and 2 (for example 6) go into both lists.
The order in which the lists are declared is very important.
2. The printList method should display each list item on a new line.
3. Using the printList method, display these three lists. First, the list for x%3, then the list for x%2, and then the last list.
Requirements:
1. Declare and immediately initialize 4 ArrayList<Integer> variables. The first list will be the main one. The other lists will be supplementary.
2. Read 20 numbers from the keyboard and add them to the main list.
3. Add to the first supplementary list all numbers in the main list that are divisible by 3.
4. Add to the second supplementary list all numbers in the main list that are divisible by 2.
5. Add to the third supplementary list all the remaining numbers from the main list.
6. The printList method should display each element of the passed list on a new line.
7. The program should display the three supplementary lists using the printList method.
*/
public class Solution {
public static void main(String[] args) throws Exception {
//write your code here
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> mainList = new ArrayList<Integer>();
ArrayList<Integer> list1 = new ArrayList<Integer>();
ArrayList<Integer> list2 = new ArrayList<Integer>();
ArrayList<Integer> list3 = new ArrayList<Integer>();
// Main list
for (int i=0; i<=19; i++)
{
mainList.add(scanner.nextInt());
}
// Divisble by 3
for (int i=0; i<mainList.size(); i++)
{
Integer x = mainList.get(i);
if (x % 3 == 0)
{
list1.add(x);
}
}
// Divisble by 2
for (int i=0; i<mainList.size(); i++)
{
Integer x = mainList.get(i);
if (x % 2 == 0)
{
list2.add(x);
}
}
// Remaining numbers
for (int i=0; i<mainList.size(); i++)
{
Integer x = mainList.get(i);
if (x % 2 > 0 && x % 3 > 0)
{
list3.add(x);
}
}
printList(mainList, list1, list2, list3);
}
public static void printList(ArrayList<Integer> mainList, ArrayList<Integer> list1, ArrayList<Integer> list2, ArrayList<Integer> list3 ) {
//write your code here
for (int i=0; i<mainList.size(); i++)
{
Integer x = mainList.get(i);
System.out.println(x);
}
for (int i=0; i<list1.size(); i++)
{
Integer x = list1.get(i);
System.out.println(x);
}
for (int i=0; i<list2.size(); i++)
{
Integer x = list2.get(i);
System.out.println(x);
}
for (int i=0; i<list3.size(); i++)
{
Integer x = list3.get(i);
System.out.println(x);
}
}
}

printList(<codeGymsOwnTestList>);, in which case the method that takes one list in would not be available and the verification will fail. It will also do the same thing to your main method; cut out your printList method and use it's own one to test main.