Whats wrong in my solution

import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner scn = new Scanner(System.in);
int n = scn.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = scn.nextInt();

}

    sortColorsDescending(arr); 

    for (int i = 0; i < arr.length; i++){
        System.out.println(arr[i]);
    }
}

public static void sortColorsDescending(int[] arr) {
    int l = 0;
    int hi = arr.length - 1;
    int mid = 0;

    while (mid <= hi) {
        if (arr[mid] == 2) {
            Swap(arr, mid, l);
            l++;
            mid++;
        } else if (arr[mid] == 0) {
            Swap(arr, mid, hi);
            hi--;
        } else {
            mid++; // for 1
        }
    }
}

public static void Swap(int[] arr, int a, int b) {
    int temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
}

}