public ListNode deleteDuplicates(ListNode head) {
		if (head == null) {
			return null;
		}
		if (head.next == null) {
			return head;
		}
		ListNode itr = head;
		ListNode itrNext = head;
		ListNode itrPrev = head;
		// {1,1}
		// {1,1,1,1}
		//1 1 2
		while (itr.next != null) {
			itrNext = itr.next;
			itrPrev = itr;
			boolean gotEnd = false;
			while (itr.val == itrNext.val) {//itr point to the next neq node
				if (itr.next != null) {
					itr = itr.next;
					itr.next = itrNext.next;
					if (itr.next != null) {
						itrNext = itr.next;
					}else{
						gotEnd = true;
						break;
					}
				}
			}
			if(gotEnd){
				itrPrev.next = null;
				break;
			}else{//itr point to last same number
				itr = itrNext;//itr.next;
				itrPrev.next = itr;
			}
		}
		return head;
	}