My solution does not pass 4 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 arr[] =  new int[n];
	if(arr.length > 1 && arr.length < 1000)
	{
	for(int i =0 ; i< n ;i++)
	{
		arr[i] = sc.nextInt();
	}
	int tar = sc.nextInt();
	sumtriple(arr , tar);
	}
}
public static int[] mergingtwoarr(int[] one , int[] two )
{
	int[] sorted = new int[one.length + two.length];
	int i =0 ,j =0 ,k =0 ;
	while(i < one.length && j < two.length)
	{
		if(one[i] < two[j])
		{
			sorted[k] = one[i];
			k++;
			i++;
		}
		else
		{
			sorted[k]  = two[j];
			k++;
			j++;
		}
	}
	if(i== one.length)
	{
		while(j<two.length)
		{
			sorted[k] = two[j];
			k++;
			j++;
		}
	}
	if(j== two.length)
	{
		while(i<one.length)
		{
			sorted[k] = one[i];
			i++;
			k++;
		}
	}
	return sorted;
}
public static int[]  mergesort(int[] arr , int lo , int hi)
{
	if(lo== hi)
	{
		int[] br = new int[1];
		br[0] = arr[lo];
		return br;
	}
	int mid = (lo + hi)/2;
	int[] firsthalf = mergesort(arr , lo , mid);
	int[] secondhalf = mergesort(arr , mid+1 , hi);
	int[] sorted = mergingtwoarr(firsthalf , secondhalf);
	return sorted;
}
public static void sumtriple(int[] arr , int target)
{
	int array[] =  mergesort(arr , 0 , arr.length-1);
	for(int i =0 ; i<array.length ; i++)
	{
		int l = i+1 ;
		int r = array.length -1;
		while(l<r)
		{
			int sum = array[i] + array[l] +array[r]; 
			if(sum > target)
			{
				r--;
			}
			else if(sum < target)
			{
				l--;
			}
			else
			{
				System.out.println(array[i] + ", " + array[l] + " and " + array[r]);
				l++;
				r--;
			}
		}
	}
}

}

just do l++ in line 87

else if(sum < target){
l++;
}

if this resolves your doubt ,please mark it resolved and rate as well :slight_smile: