#include <stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Node
{
    int n; char a[100];
    struct Node* prev;
    struct Node* next;
}Node;
Node* createNode(int data)
{
    Node* newNode=(Node*)malloc(sizeof(Node*));
    newNode->data=data;
    newNode->next=NULL;
    newNode->prev=NULL;
    return newNode;
}
void insertAtBeginning(Node** head,int data)
{
    Node* newNode=createNode(data);
    if(*head == NULL){
        *head = newNode;
        return;
    }
    newNode->next = *head;
    (*head)->prev = newNode;
    *head=newNode;
}
void insertAtEnd(Node** head,int data)
{
    Node* newNode=createNode(data);
    if(*head==NULL){
        *head=newNode;
        return;
    }
    Node* temp = *head;
    while(temp->next != NULL){
        temp = temp->next;
    }
    temp->next = newNode;
    newNode->prev = temp;
}
void insertAtPosition(Node** head,int data,int position)
{
    if(position<1){
        printf("position should be>=1.\n");
        return;
    }
    if(position == 1){
        insertAtBeginning(head,data);
        return;
    }
    Node* newNode = createNode(data);
    Node*temp = *head;
    for(int i = 1;temp != NULL && i < position-1; i++){
        temp = temp->next;
    }
    if(temp == NULL){
        printf("position greater then the number of nodes.\n");
        return;
    }
    newNode->next = temp->next;
    newNode->prev = temp;
    if(temp->next != NULL){
        temp->next->prev = newNode;
    }
    temp->next = newNode;
}
void printListForward(Node** head)
{
    Node* temp = *head;
    printf("Forward List:");
    while(temp != NULL){
        printf("%d ",temp->data);
        temp = temp->next;
    }
    printf("\n");
}
int main()
{
    Node* head = NULL;
    insertAtBeginning(&head,3);
    insertAtEnd(&head,Meher);
    insertAtPosition(&head,Govindh,Pavni);
    printf("%);
    printListForward(&head);
    return 0;
}