/*struct Node
{
int data;
struct Node *next;
struct Node *prev;
Node(int x){
data = x;
next = NULL;
prev = NULL;
}
};*/
Node* partition(Node *l, Node *h){
{
int x = h->data;
Node *i = l->prev;
for (Node *j = l; j !=h; j = j->next)
{
if (j->data <= x)
{
swap((j->data), (i->data));
i = i->next;
}
}
swap((i->data), (h->data));
return i;
}
}