output of the functions based on nodes : im new at coding cpp and i dont undertstand how we can get the following outputs about the nodes subject? can anyone help thanks in advance :)

the output of the following program is

  10 3 22 33

  5 7 6

  3 22 33

  2 4 6 

here is the code:

    void display(Node *head){

      if(head == NULL)
         cout<<"head is NULL"<<endl;
   
      for(Node *tmp=head; tmp!=NULL; tmp = tmp->next )
         cout<<" "<<tmp->data;
         cout<<endl;
    }

    Node *func1(int value1, int value2, int value3){
      Node *head = new Node;
      head->next = new Node;
      head->next->next = new Node;
      head->next->next->next = NULL;
      head->data = value1;
      head->next->data = value2;
      head->next->next->data = value3;
      return head;  
    }

    void func2(Node *head1, Node *head2, Node *head3){
      head1->next = head3;
      head1->next->data =3;
      head1= head2;
      head1->data = 5;
      head1->next->data = 7;
      head2 = head1;
      head3 = head1;
    }

     void func3(Node *head){
        for(; head!= NULL; head = head->next)
            head->data *=2;
    }

     int main(){

     Node *head1 = func1(10,20,30);
     Node *head2 = func1(2,4,6);
     Node *head3 = func1(11,22,33);
     
     func2(head1, head2, head3);
     display(head1);
     display(head2);
     display(head3);
    
     head1 = func1(1,2,3);
     func3(head1);
     display(head1);
     return 0;
     }
    