wrote completely memory-friendly routine for GetValue (most likely the array allocated by VecOwnershipRanges requires no free-ing, since there is no "VecRestoreOwnershipRanges" function, however I'm not sure if when I use thousands of processes, the vector will store a list of integers 1000 elements long for each process just to GetValue here.