Concatenate two arrays generated randomly
Use the native method arraycopy as opposed to manually copying the elements for your concatenation method for better performance: 

public static int[] concat(int[] a, int[] b) {
   int aLen = a.length;
   int bLen = b.length;
   int[] c= new int[aLen+bLen];
   System.arraycopy(a, 0, c, 0, aLen);
   System.arraycopy(b, 0, c, aLen, bLen);
   return c;
}


Also think about making more use of enhanced for loops, how come you are only using them for part of your solution and not the rest?

for(int i:arr){
    i = rand.nextInt(maxValue);
}