protected static void fill(int startValue, int shiftValue, int maxValue, int ntg, int[] v, List<int[]>list){
        if(shiftValue<ntg){            
            for(int i=startValue; i<maxValue; i++){
                v[shiftValue]=i;
                fill(i+1,shiftValue+1 , maxValue, ntg, v.clone(), list);
            }
        } else {
            list.add(v.clone());
        }
    }