import java.util.*;
public class Solution {
public void merge(int A[], int m, int B[], int n) {
int[] newArray = new int[m+n];
int pivotNew = 0;
int pivotB = 0;
for (int i : Arrays.copyOfRange(A, 0, m)){
int[] partialB = null;
for (int j = pivotB; j < n; j++){
if (B[j] > i){
partialB = Arrays.copyOfRange(B, pivotB, j);
pivotB = j;
break;
}
}
int[] versionB = partialB == null ? Arrays.copyOfRange(B, pivotB, n) : partialB;
pivotB = partialB == null ? n : pivotB;
for (int j : versionB){
newArray[pivotNew] = j;
pivotNew += 1;
}
newArray[pivotNew] = i;
pivotNew += 1;
}
for (int j = pivotB; j < n; j++){
newArray[pivotNew] = B[j];
pivotNew += 1;
}
for (int i = 0; i < newArray.length; i++){
A[i] = newArray[i];
}
}
}