Two test cases are wrong in the problem sum of two arrays

#include
#include
using namespace std;
int main() {
int n,m;
cin>>n;
int *N=new int[n];
for(int i=0;i<n;i++){
cin>>N[i];
}
cin>>m;
int *M=new int[m];
for(int i=0;i<m;i++){
cin>>M[i];
}

vector<int>vec;
int x=0,carry=0;
for(int i=n-1,j=m-1;(i>=0 || j>=0);i--,j--){
	if(i>=0 && j>=0){
	x=(N[i]+M[j]+carry)%10;
	vec.push_back(x);
	carry=(N[i]+M[j]+carry)/10;
	}
	else if(i<0){
		x=(M[j]+carry)%10;
		vec.push_back(x);
		carry=(M[j]+carry)/10;
	}
	else if(j<0){
		x=(N[i]+carry)%10;
		vec.push_back(x);
		carry=(N[i]+carry)/10;
	}
}
for(int i=vec.size()-1;i>=0;i--){
	cout<<vec[i]<<", ";
}
cout<<"END";
return 0;

}