public boolean getGifts(int index,float sum, int n)
	{
		
		if((sum>=0&&n==0)) 
		{
			if(sum<minSum)
			{
				gift_list.clear();
				ArrayList<Products>tmp = new ArrayList<Products>();
			
				for(int i=0;i<gift.size();i++)
				{
					tmp.add(gift.get(i));
				}
				
				gift_list.add(tmp);
				
				minSum = sum;
				return true;
			}else if(sum==minSum)
			{
				ArrayList<Products>tmp = new ArrayList<Products>();
				
				for(int i=0;i<gift.size();i++)
				{
					
					tmp.add(gift.get(i));
					
				}
				
				gift_list.add(tmp);
				return true;
			}
			
			
		}
		
		//reduce the searching space
		if((sum<0) ||index<n-1 ||index <=-1)
		{
			return false;
		}
		
		gift.add(products.get(index));
		getGifts(index-1,sum-products.get(index).getPrice(),n-1);
		gift.remove(gift.size()-1);
		
		return getGifts(index-1,sum,n);

	}