public void make_pivot(ArrayList<finger_print> outliers){
		
		
		////System.out.println("Total outliers :" +outliers.size());
		if(outliers.size()< OUTLIERS_SIZE  || outliers.size() < PIVOT_SIZE_TOTAL){
			for(int i=0;i<outliers.size();i++){
				final_pivot_list.add(new node(outliers.get(i)));
				
			}
			return;
		}
		
		ArrayList<node> pivot_lst= new ArrayList<node>();
		
		
		Random r= new Random();
		
		for(int i=0;i<PIVOT_SIZE_TOTAL;i++){			
			int j=r.nextInt(outliers.size());
			pivot_lst.add(new node(outliers.get(j)));
			outliers.remove(j);	
		}

		if(outliers.size()==0) {
			final_pivot_list.addAll(pivot_lst);
			return;
		}
		
		for(finger_print p : outliers){
			p.set_sim_pivot(pivot_lst);
	
		}
		
		
		Collections.sort(outliers);

		double median_similarity = getMedian_sim(outliers);
		
		
		for(int i=outliers.size()/2 -1;i<outliers.size();i++){
			if(outliers.get(i).getSim_closest_pivot() > median_similarity){
				for(int j=outliers.size()-1;j>=i;j--){
					outliers.get(j).getClosest_pivot().set_object(outliers.get(j));
					outliers.remove(j);
				}
				break;
			}
		}
		

		
		
		final_pivot_list.addAll(pivot_lst);
		node outlier_pvt=new node(outliers);
		final_pivot_list.add(outlier_pvt);
		outlier_pvt.setOutlier_pivot(true);
		

		make_pivot(outliers);
		
		return;
	}