Прошу помощи!!! В чем может быть проблема? Тесты проходит, но Валя не принимает первые 2 и последние 2 пункта.
public class AdvertisementManager {
    private  final AdvertisementStorage storage=AdvertisementStorage.getInstance();
    private int timeSeconds;
    List<Advertisement> listOFVideos=storage.list();
    List<Advertisement> listOfVideosForDisplaying=new ArrayList<>();
    private int[][] seen;
   private int [][]keep;
    private long [] values;

    private int [] sizes;
    public AdvertisementManager(int timeSeconds){
        this.timeSeconds=timeSeconds;
        this.seen=new int[timeSeconds+1][timeSeconds+1];
        this.keep=new int[timeSeconds+1][timeSeconds+1];
        this.values=new long[listOFVideos.size()];
        this.sizes=new int[listOFVideos.size()];
    }

    public void processVideos() throws NoVideoAvailableException {
        int i=0,j=0;
        for (Advertisement element:listOFVideos){
            values[i]=element.getAmountPerOneDisplaying();
          if (i<2)
            i++;
        }
        for(Advertisement element:listOFVideos){
            sizes[j]=element.getDuration();
            if (j<2)
            j++;
        }

        if (storage.list().isEmpty())
            throw new NoVideoAvailableException();
        else{
            knapsack(listOFVideos.size()-1,timeSeconds);
            int numberOfItems=listOFVideos.size();
            int capacity=timeSeconds;
            while (numberOfItems>=0){
                if (keep[numberOfItems][capacity]==1){
                    listOfVideosForDisplaying.add(listOFVideos.get(numberOfItems));
                    capacity-=sizes[numberOfItems];
                    numberOfItems--;
                }
                else
                    numberOfItems--;
            }
            Collections.sort(listOfVideosForDisplaying, new Comparator<Advertisement>() {

                public int compare(Advertisement o1, Advertisement o2) {
                    return (int) (o2.getAmountPerOneDisplaying()-
                            o1.getAmountPerOneDisplaying());

                }
            });
            for (Advertisement element:listOfVideosForDisplaying) {
                //First Video is displaying... 50, 277
                System.out.println(element.getName()+" is displaing... "+element.getAmountPerOneDisplaying()+", "+
                element.getAmountPerOneDisplaying()*1000/element.getDuration());
                element.revalidate();
            }
        }
    }



    private int knapsack(int index, int capacity){
        int take=0;
        int donttake=0;

        if (index==0){
            if (sizes[0]<=capacity){
                keep[index][capacity]=1;
                seen[index][capacity]=(int)values[0];
                return (int)values[0];
            }
            else{

                keep[index][capacity]=0;
                seen[index][capacity]=0;
                return 0;
            }
        }
        if (sizes[index]<=capacity)
            take=knapsack(index-1,capacity-sizes[index])+(int)values[index];

            donttake=knapsack(index-1,capacity);
        seen[index][capacity]=Math.max(take,donttake);
    if (take>donttake)
        keep[index][capacity]=1;
    else
        keep[index][capacity]=0;
        return seen[index][capacity];
    }

}