/**
 *  Compact a list of objects Label, which is sorted on Label.amount
 */

import java.util.*;

class Label {
    private final String id;
    private final double amount;
    
    public Label(String id, double amount)
    {
    	this.id = id;
    	this.amount = amount;
    }
    
    public String getId() {
    	return this.id;
    }
    
    public double getAmount() {
    	return this.amount;
    }
    
    public String toString() {
    	return id + ": " + amount;
    }
}
	
class Ideone {
	public static List<Label> compact(List<Label> l)
	{
		Set<String> ids = new HashSet<>();
		List<Label> toret = new ArrayList<>();
		
		for(Label label: l) {
			if ( !ids.contains( label.getId() ) ) {
				ids.add( label.getId() );
				toret.add( label );
			}
		}
		
		return toret;
	}
	
	public static void compactInPlace(List<Label> l)
	{
	    Set<String> ids = new HashSet<>();
	
	    for(int i = 0; i < l.size(); ++i) {
	        if ( !ids.contains( l.get( i ).getId() ) ) {
	            ids.add( l.get( i ).getId() );
	        } else {
	            l.remove( i );
	            --i;
	        }
	    }
	
	    return;
	}

	public static void main(String[] args)
	{
		ArrayList<Label> l = new ArrayList<>();
		
		l.add( new Label( "1742", 10 ) );
		l.add( new Label( "1742", 11 ) );
		l.add( new Label( "1647", 12 ) );
		l.add( new Label( "4217", 13 ) );
		l.add( new Label( "1647", 14 ) );
		l.add( new Label( "1742", 15 ) );

		compactInPlace( l );
		System.out.println( l );
	}
}
