Help me in solving FREEQ problem

My issue

print first n/2 ptime number twice

My code

#include <bits/stdc++.h>
using namespace std;

void accept_ho_ja(vector<int>& prime, int size){
    
    int n;
    cin>>n;
    if(n&1) cout<<1<<" ";
    if(n>1){
        for(int i=0; i<n/2; i++){
            cout<<prime[i]<<" "<<prime[i]<<" ";
        }
    }
    
    cout<<endl;
    
}

int main() {
    int t;
    int size=2*10000+1;
    vector<int> sieve(size,1);
    sieve[0]=sieve[1]=0;
    vector<int> prime;
    for(int i=2; i*i<size; i++){
        if(sieve[i]){
            for(int j=i*i; j<size; j+=i) sieve[j]=0;
        }
    }
    for(int i=2; i<size; i++){
        if(sieve[i]) prime.emplace_back(i);
    }
    

    cin>>t;
    while(t--) accept_ho_ja(prime,size);
    
}

Problem Link: Frequal Practice Coding Problem

@rawift
plzz refer the following code for better understanding of the logic

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define N 1e6

vector<bool> prime;

void sieve(int n) {
    prime = vector<bool> (n+1,true);
    
    for (int p=2;p*p<=n;++p) {
        if (prime[p]==true) {
            for (int i=p*p;i<=n;i+=p) prime[i]=false;
        }
        
    }
}

signed main() {
	// your code goes here
    int t;
    cin >> t;
    sieve(N);
    while (t--) {
        int n;
        cin >> n;
        
        
        if (n==1) { cout << 1 << endl; continue; }
        else if (n%2==1) { cout << 1<<" "; --n; }
        n=n/2;
        for (int i=2;i<N;i++) {
            if (prime[i]==false) 
            continue;
            cout << i << " "<<i<<" ";
            n--; 
            if (n==0) break;
        }
        cout << endl;
    }
}