OHANIBTR - Ohani And Binary Search Tree

no tags 

Ohani has recently learned about complete binary tree and binary search tree. Now she wants to create a complete binary tree and insert some value in the nodes such that it maintains the property of a binary search tree. She calls this tree Complete Binary Search Tree. So she takes a sorted array and one by one she inserts the values in a complete binary tree to create Complete Binary Search Tree (CBST).

A binary tree is called a Binary Search Tree if for each node u, the value of u is greater than every value in the left subtree of u and is less than every value in right subtree of u.

A binary tree is said to be complete if all its levels, expect possibly the last, have the maximum number of possible nodes, and if all the nodes at the last level appears as far left as possible. So, there is a unique complete tree for n nodes. Here is a complete tree of 10 nodes.

binary tree

Let a sorted array of five element is: 1 3 4 6 9. So, the CBST of this array is:

CBST

But suddenly she comes through a problem. Her teacher gave her an array which is unsorted. So, she first sort the array and then use the sorted array to create CBST. To sort the array, she takes any elements and place it at any place in the array in one step. For example: if an array is: 1 4 2 3, she can take 2 and place it after 1, she can then take 4 and place it after 3, so, total 2 steps sorts the array. But this is not the minimum. Now your task is to find the minimum number of steps needed to sort an unsorted array using Ohani's procedure and then build a CBST.

Input

The first line of the input contains an integer T (1<=5) denoting the number of test cases.

Each test case contains of two lines. First line contains an integer N (1 <= N <= 100000),  the number of elements in the array.
Next line contains N distinct numbers where each numbers will be between 1 to N.

Output

For each test case, you need to output the case number on  the first line.
In the second line you have to output the minimum numbers of steps required to sort the array.
In the third line, for each  value from 1 to N, the parent of these values in the built CBST. The parent of the root is -1.

For example, for if the given array is: 1 4 2 3, then the output for the CBST is,

2 3 -1 3

Because, the parent of value 1 is 2, the parent of value 2 is 3, 3 is the root, so, its parent is -1, the parent of 4 is 3.

Example

Input:
1
4
1 4 2 3

Output:
Case 1:
Minimum Move: 1
2 3 -1 3 

hide comments
Vivek Mangal: 2016-04-02 17:09:29

oh! this is disgusting. those who are getting WA,plz don't print space after the last number. For eg. 2 3 -1 3
then there is no space after 3(the last number).

Last edit: 2016-04-02 19:58:42
VISHAL DEEPAK AWATHARE: 2015-01-11 14:36:45

what do you mean by no space??@kashish Mittal

kancha: 2015-01-11 06:44:42

@Andy yeah i was getting wa cause of this.. :/ Thanks

VISHAL DEEPAK AWATHARE: 2015-01-10 06:24:37

im getting some trouble during input, im using java , and trying bufferedreader.readline(), but dont know why its showing NZEC, only for reading the input

Last edit: 2015-01-10 06:25:03
VISHAL DEEPAK AWATHARE: 2015-01-08 04:39:28

any hints on how to from CBST?

Andy: 2014-11-15 18:49:35

there is no space after the last number


Added by:Raihat Zaman Neloy
Date:2014-10-16
Time limit:0.5s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ASM64