What is wrong with this code , it is showing correct ans for many test cases

import java.util.*;
public class Main {

public static void main(String[] args) {
	Scanner sc=new Scanner(System.in);
	int n=sc.nextInt();
	int a[] = new int[n];
	for(int i=0 ; i<n ; i++)
		a[i]=sc.nextInt();
	
	
	int sum=0,avail=0,breaker=0;
	HashMap<Integer , Integer> m = new HashMap<>();
	for(int i=0 ; i<n ; i++) {
		
		if(m.get(a[i])!=null && breaker<=m.get(a[i])) {
			
			breaker=i;
			
			int index=m.get(a[i]);
			sum=sum+sum(avail) - sum(i-(index+1)) ;
			avail=i-index;
			
			m.put(a[i] , i);
			
		} else {
			m.put(a[i] , i);
			avail++;
		}
		
	}
	
	
	sum = sum+sum(avail);
	
	System.out.println(sum);

// System.out.println(sumoflength(a , n));
}

public static int sum(int avail) {
	return  (avail+2)*avail*(avail+1) / 6 ;
}

}

Hey @Himanshu-Jhawar-2273952536067590
5
1 2 3 1 2
correct output : 22
your code gives : 26