Help me in solving PRIMEPERM problem

My issue

why cant one can proceed this way
that if n is written as sum of 2 prime numbers

My code

#include <bits/stdc++.h>
using namespace std;
#define ll long long int
bool isprime(int n);
int main() {
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        int x=0;
	  for(int i=1;i<=n/2;i++){
	      if(isprime(i) && isprime(n-i)){
	          x=i;
	      }
	  }
	  if(x==0) cout<<-1<<endl;
	  else{
	  for(int i=x+1;i<=n;i++){
	      cout<<i<<" ";
	  }
	  for(int i=1;i<=x;i++){
	      cout<<i<<" ";
	  }
	  cout<<endl;
    }
    }
	return 0;
}
bool isprime(int  n){
 if (n==1) return false;
if(n==2||n==3) return true;
if(n%2==0 || n%3==0) return false;
for(int  i=5;i*i<=n;i=i+6){
if(n%i==0 || n%(i+2)==0) return false;
}
return true;
}

Problem Link: PRIMEPERM Problem - CodeChef