#include <bits/stdc++.h>
using namespace std;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n,m;
	cin >> n;
	int arr[n];
	bool st1=true;
	for(int i=0; i<n; i++){
		cin >> arr[i];
		if(arr[i]!=1) st1=false;
	}
	cin >> m;
	vector<int> brr(m);
	for(int i=0; i<m; i++) cin >> brr[i];
	if(st1){
		bitset<505> bs[n+1];
		bs[0][0]=1;
		int num=-1;
		for(int i=1; i<=n; i++){
			for(int j=0; j<m; j++) bs[i]|=bs[i-1]<<brr[j];
			if(bs[i][n]){
				num=i;
				break;
			}
		}
		if(num==-1){
			cout << -1;
			return 0;
		}
		else{
			vector<int> ans;
			int cur=n;
			for(int i=num; i>0; i--){
				for(int j=0; j<m; j++){
					if(bs[i-1][cur-brr[j]]){
						ans.push_back(brr[j]);
						cur-=brr[j];
						break;
					}
				}
			}
			cout << ans.size() << '\n';
			cur=1;
			for(int i:ans){
				cout << i << ' ';
				for(int j=0; j<i; j++){
					cout << cur << ' ';
					cur++;
				}
				cout << '\n';
			}
		}
	}
	else if(m==1){
		int tot=0;
		for(int i=0; i<n; i++) tot+=arr[i];
	}
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |