How to Overcome runtime error in the following code??

#include<stdio.h>

#include<stdlib.h>

int main()

{

int n,i;

scanf("%d",&n);

int *arr;

arr=(int*)malloc(n*sizeof(int));

for(i=0;i<n;i++)

scanf("%d",*(arr+i));

mergesort(arr,0,n-1);

for(i=0;i<n;i++)

{

printf("%d",arr[i]);

}

}

void merge(int arr[],int l,int r,int m)

{

int i=0,j=0,k=1;

int n1=l-m+1;

int n2=r-m;

int L[n1],R[n2];

for (i = 0; i < n1; i++)

    L[i] = arr[l + i]; 

for (j = 0; j < n2; j++)

   R[j] = arr[m + 1+ j]; 

  while(i<n1&&j<n2)

{

if (L[i] <= R[j])

    { 
    arr[k] = L[i]; 

        i++; 
    } 

else

{

        arr[k] = R[j]; 

        j++; 

}

    k++; 

}

  while (i < n1) 

{ 

arr[k] = L[i];

    i++; 

  k++; 

}

 while (j < n2) 

{ 

arr[k] = R[j];

 j++; 

  k++; 

}

}

void mergesort(int arr[],int l,int r)

{

if (l < r)

 {
     
     int m = l+(r-l)/2;

    mergesort(arr, l, m); 

     mergesort(arr, m+1, r); 

     merge(arr, l, r, m); 

}

}