public class DoublyLinkedList {

	int[] next;
	int[] prev;

	public DoublyLinkedList(int maxSize) {
		// 0 - dummy element
		next = new int[maxSize + 1];
		prev = new int[maxSize + 1];
	}

	public void insert(int x, int pos) {
		prev[x] = pos;
		next[x] = next[pos];
		prev[next[x]] = x;
		next[prev[x]] = x;
	}

	public void remove(int x) {
		next[prev[x]] = next[x];
		prev[next[x]] = prev[x];
	}

	// Usage example
	public static void main(String[] args) {
		int n = 10;
		DoublyLinkedList list = new DoublyLinkedList(n);
		for (int i = 1; i <= n; i++) {
			list.insert(i, 0);
		}
		list.remove(1);
		list.remove(10);
		list.remove(5);
		for (int i = list.next[0]; i != 0; i = list.next[i]) {
			System.out.print(i + " ");
		}
		System.out.println();
	}
}
