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];
        }
    }
}