#include <stdio.h>
#include <stdlib.h> // For malloc

// Function to merge two sorted arrays using pointers
int* mergeSortedArrays(int* arr1, int n, int* arr2, int m) {
    // Allocate memory for the merged array
    int* mergedArr = (int*)malloc((n + m) * sizeof(int));
    if (mergedArr == NULL) {
        printf("Memory allocation failed!\n");
        return 1;
    }

    int p1 = 0; // Pointer for arr1
    int p2 = 0; // Pointer for arr2
    int p_merged = 0; // Pointer for mergedArr

    // Merge elements while both arrays have elements
    while (p1 < n && p2 < m) {
        if (arr1[p1] < arr2[p2]) {
            mergedArr[p_merged++] = arr1[p1++];
        } else {
            mergedArr[p_merged++] = arr2[p2++];
        }
    }

    // Copy remaining elements of arr1, if any
    while (p1 < n) {
        mergedArr[p_merged++] = arr1[p1++];
    }

    // Copy remaining elements of arr2, if any
    while (p2 < m) {
        mergedArr[p_merged++] = arr2[p2++];
    }

    return mergedArr;
}