input: Write a function to solve a knapsack problem using dynamic programming. The function should return the maximum value that can be obtained given the list of items with their values and weights, and the capacity of the knapsack. The input is a list of tuples where each tuple contains the value and weight of an item, and the capacity of the knapsack. If the input list is empty, the function should return 0.
  assert knapSack(50, [10, 20, 30], [60, 100, 120], 3) == 220
  assert knapSack(10, [1, 2, 3], [5, 3, 4], 3) == 9
  assert knapSack(7, [1, 3, 4, 5], [1, 4, 5, 7], 4) == 9
  assert knapSack(0, [2, 3, 4], [3, 4, 5], 3) == 0
  assert knapSack(50, [], [], 0) == 0
output: def knapSack(capacity, weights, values, n):
      if n == 0 or capacity == 0:
          return 0
      dp = [[0 for _ in range(capacity + 1)] for _ in range(n + 1)]
      for i in range(1, n + 1):
          for w in range(1, capacity + 1):
              if weights[i-1] <= w:
                  dp[i][w] = max(values[i-1] + dp[i-1][w-weights[i-1]], dp[i-1][w])
              else:
                  dp[i][w] = dp[i-1][w]
      return dp[n][capacity]