How priority queue decide on which parameter it should give the minimum at top as i am passing a pair in this and this code is not working while practice on gfg

#include<bits/stdc++.h>
#define N 105
using namespace std;
void printArray(vector arr, int size)
{
for (int i=0; i < size; i++)
cout << arr[i] << " ";
}

// } Driver Code Ends
//User function Template for C++

class Solution
{
typedef pair<int,pair<int,int>>node;

public:
//Function to merge k sorted arrays.
vector<int> mergeKArrays(vector<vector<int>> arr, int K)
{ 
    vector<int>result;
    priority_queue<node,vector<node>,greater<node>>pq;
    
    for(int i=0;i<arr.size();i++){
        pq.push({arr[i][0],{i,0}});
    }
    while(!pq.empty()){
      node current=pq.top();
      pq.pop();
      int element=current.first;
      int x=current.second.first;
      int y=current.second.second;
      
      result.push_back(element);
       
      if(y+1<arr[x].size()){
          pq.push({arr[x][y+1],{x,y+1}});
      }
    }
    return result;
}

};