How to do array split


typedef  logic [7:0] data_array_32x10_8p [32][10];
typedef  logic [7:0] data_array_16x10_8p [16][10];

data_array_32x10_8p  a;
data_array_16x10_8p a1, a2;

//assign 0-15 row of a to a1 , 16-31 row to a2

a1 = a[0:15];
a2 = a[16:31];

//or 

a1 = a[15:0];
a2 = a[31:16];


which one is right, what is the diff between the two method?
Thanks

In reply to designer007:

I think the best way of learning this is trying it yourself. You quickly find the answer.