#include <bits/stdc++.h>
using namespace std;
int minSubsetSumDifference(vector<int>& arr, int n)
{
if(n==1) return arr[0];
int sum = 0;
for(int &x:arr) sum += x;
int knapsackSum = sum/2;
vector<vector<int>>dp(n+1,vector<int>(knapsackSum+1));
for(int i=0;i<=knapsackSum;++i) dp[0][i] = 0;
for(int i=0;i<=n;++i) dp[i][0] = 1;
int ansSum = 0;
for(int i=1;i<=n;++i){
for(int j=1;j<=knapsackSum;++j){
dp[i][j] = j>=arr[i-1] ? dp[i-1][j] | dp[i-1][j-arr[i-1]] : dp[i-1][j];
if(i==n && dp[i][j]) ansSum = j;
}
}
return abs(ansSum - (sum-ansSum));
}
int main(){
vector<int> vec={3, 4, 5, 3, 100, 1, 83, 54, 23, 20};
cout<<minSubsetSumDifference(vec, vec.size())<<endl;
return 0;
}