Simple C solution 
Code
# Code
```c []
int* intersection(int** nums, int size, int* colSize, int* returnSize) {
    int hash[1001] = {0};
    int count = 0;
    int *ans = malloc(4004);
    for(int i=0;i<colSize[0];i++){
        hash[nums[0][i]]++;
    }
    for(int i=1;i<size;i++)
    {
        for(int j=0;j<colSize[i];j++)
        {
            if(hash[nums[i][j]]==i)  hash[nums[i][j]]++;
        }
    }
    for(int i=0;i<1001;i++){
        if(hash[i]==size) ans[count++] = i;
    }
    *returnSize = count;
    return ans;
}
```
['Hash Table', 'C']