import java.util.concurrent.ConcurrentLinkedDeque;

public class JI9050999 {
	static Integer value; 

	public static void main(String[] args) { 
		int nulls = 0, zeros = 0, ones = 0; 

		while (ones == 0) { 
			ConcurrentLinkedDeque<Integer> d = new ConcurrentLinkedDeque<>(); 

			Thread t = new Thread() { 
				public void run() { 
					value = d.poll(); 
				} 
			}; 

			Thread u = new Thread() { 
				public void run() { 
					d.addFirst(0); 
					d.offer(1); 
				} 
			}; 

			t.start(); 
			u.start(); 

			try { t.join(); } catch (Exception e) { } 
			try { u.join(); } catch (Exception e) { } 

			if (value == null) nulls++; 
			else if (value == 0) zeros++; 
			else if (value == 1) ones++; 

			if ((nulls + zeros) % 10000 == 0) 
				System.out.println("nulls: " + nulls + ", zeros: " + zeros + ", ones: " + ones); 
		} 

		System.out.println("nulls: " + nulls + ", zeros: " + zeros + ", ones: " + ones); 
	} 
}
