* Note: The returned array must be malloced, assume caller calls free().
int* nextGreaterElement(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){
int *ans = (int *)malloc(sizeof(int)*nums1Size);
memset(ans,-1,sizeof(int)*nums1Size);
memset(hash,-1,sizeof(int)*10001);
for(int i=0;i<nums1Size;i++){
*returnSize = nums1Size;
for(int i=0;i<nums2Size;i++){
while(top!=-1&&stack[top]<nums2[i]){
if(hash[stack[top]]!=-1){
ans[hash[stack[top]]]=nums2[i];