#include<bits/stdc++.h>
using namespace std;
struct node{
int data;
node* next;
node(int value)
{
data=value;
next=nullptr;
}
};
bool isprime(int num)
{
if(num==1) return false;
int a=0;
for(int i=2;i*i<=num;i++)
{
if(num%i==0) a++;
}
if(!a) return true;
else return false;
}
class linkedlist{
public:
node* head;
linkedlist(){
head=nullptr;
}
void add(int val)
{
node* newnode=new node(val);
if(!head)
{
head=newnode;
newnode->next=nullptr;
return;
}
node* temp=head;
while(temp->next!=nullptr)
{
temp=temp->next;
}
temp->next=newnode;
newnode->next=nullptr;
}
void display()
{
node* temp=head;
while(temp!=nullptr)
{
cout<<temp->data<<" ";
temp=temp->next;
}
}
};
void insert(linkedlist &l1,linkedlist &l2)
{
node* curra=l1.head;
node* currb=l2.head;
node* preva=nullptr;
int pos=1;
while(curra!=nullptr && currb!=nullptr)
{
if(isprime(pos))
{
node* save=currb->next;
currb->next=curra;
preva->next=currb;
preva=currb;
currb=save;
}
else
{preva=curra;curra=curra->next;}
pos++;
}
}
int main()
{
int len1,len2;
cin>>len1>>len2;
linkedlist l1,l2;
for(int i=0;i<len1;i++)
{
int m;cin>>m;
l1.add(m);
}
for(int i=0;i<len2;i++)
{
int m;cin>>m;
l2.add(m);
}
cout<<endl;
l1.display();cout<<endl;
l2.display();cout<<endl;
insert(l1,l2);
l1.display();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IG5vZGV7CiAgICBpbnQgZGF0YTsKICAgIG5vZGUqIG5leHQ7CiAgICBub2RlKGludCB2YWx1ZSkKICAgIHsKICAgICAgICBkYXRhPXZhbHVlOwogICAgICAgIG5leHQ9bnVsbHB0cjsKICAgIH0KfTsKYm9vbCBpc3ByaW1lKGludCBudW0pCnsKICAgIGlmKG51bT09MSkgcmV0dXJuIGZhbHNlOwogICAgaW50IGE9MDsKICAgIGZvcihpbnQgaT0yO2kqaTw9bnVtO2krKykKICAgIHsKICAgICAgICBpZihudW0laT09MCkgYSsrOwogICAgfQogICAgaWYoIWEpIHJldHVybiB0cnVlOwogICAgZWxzZSByZXR1cm4gZmFsc2U7Cn0KY2xhc3MgbGlua2VkbGlzdHsKICAgIHB1YmxpYzoKICAgIG5vZGUqIGhlYWQ7CiAgICBsaW5rZWRsaXN0KCl7CiAgICAgICAgaGVhZD1udWxscHRyOwogICAgfQogICAgCiAgICB2b2lkIGFkZChpbnQgdmFsKQogICAgewogICAgICAgIG5vZGUqIG5ld25vZGU9bmV3IG5vZGUodmFsKTsKICAgICAgICBpZighaGVhZCkKICAgICAgICB7CiAgICAgICAgICAgIGhlYWQ9bmV3bm9kZTsKICAgICAgICAgICAgbmV3bm9kZS0+bmV4dD1udWxscHRyOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG5vZGUqIHRlbXA9aGVhZDsKICAgICAgICB3aGlsZSh0ZW1wLT5uZXh0IT1udWxscHRyKQogICAgICAgIHsKICAgICAgICAgICAgdGVtcD10ZW1wLT5uZXh0OwogICAgICAgIH0KICAgICAgICB0ZW1wLT5uZXh0PW5ld25vZGU7CiAgICAgICAgbmV3bm9kZS0+bmV4dD1udWxscHRyOwogICAgfQogICAgdm9pZCBkaXNwbGF5KCkKICAgIHsKICAgICAgICBub2RlKiB0ZW1wPWhlYWQ7CiAgICAgICAgd2hpbGUodGVtcCE9bnVsbHB0cikKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQ8PHRlbXAtPmRhdGE8PCIgIjsKICAgICAgICAgICAgdGVtcD10ZW1wLT5uZXh0OwogICAgICAgIH0KICAgIH0KICAgIAp9Owp2b2lkIGluc2VydChsaW5rZWRsaXN0ICZsMSxsaW5rZWRsaXN0ICZsMikKICAgIHsKICAgICAgICBub2RlKiBjdXJyYT1sMS5oZWFkOwogICAgICAgIG5vZGUqIGN1cnJiPWwyLmhlYWQ7CiAgICAgICAgbm9kZSogcHJldmE9bnVsbHB0cjsKICAgICAgICBpbnQgcG9zPTE7CiAgICAgICAgd2hpbGUoY3VycmEhPW51bGxwdHIgJiYgY3VycmIhPW51bGxwdHIpCiAgICAgICAgewogICAgICAgICAgICBpZihpc3ByaW1lKHBvcykpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5vZGUqIHNhdmU9Y3VycmItPm5leHQ7CiAgICAgICAgICAgICAgICBjdXJyYi0+bmV4dD1jdXJyYTsKICAgICAgICAgICAgICAgIHByZXZhLT5uZXh0PWN1cnJiOwogICAgICAgICAgICAgICAgcHJldmE9Y3VycmI7CiAgICAgICAgICAgICAgICBjdXJyYj1zYXZlOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7cHJldmE9Y3VycmE7Y3VycmE9Y3VycmEtPm5leHQ7fQogICAgICAgICAgICBwb3MrKzsKICAgICAgICB9CiAgICAgICAgCiAgICB9CmludCBtYWluKCkKewogICAgaW50IGxlbjEsbGVuMjsKICAgIGNpbj4+bGVuMT4+bGVuMjsKICAgIGxpbmtlZGxpc3QgbDEsbDI7CiAgICBmb3IoaW50IGk9MDtpPGxlbjE7aSsrKQogICAgewogICAgICAgIGludCBtO2Npbj4+bTsKICAgICAgICBsMS5hZGQobSk7CiAgICB9CiAgICBmb3IoaW50IGk9MDtpPGxlbjI7aSsrKQogICAgewogICAgICAgIGludCBtO2Npbj4+bTsKICAgICAgICBsMi5hZGQobSk7CiAgICB9CiAgICBjb3V0PDxlbmRsOwogICAgbDEuZGlzcGxheSgpO2NvdXQ8PGVuZGw7CiAgICBsMi5kaXNwbGF5KCk7Y291dDw8ZW5kbDsKICAgIGluc2VydChsMSxsMik7CiAgICBsMS5kaXNwbGF5KCk7CiAgICByZXR1cm4gMDsKfQ==