My actual data is something as follows:
n = 500;
lst={ { 2, 3, 1 }, { 6, 3, 2 }, { 18, 3, 3 }, { 54, 3, 4 }, { 162, 3,
5 }, { 486, 3, 6 }, { 4, 5, 1 }, { 20, 5, 2 }, { 100, 5, 3 }, { 6, 7,
1 },
{ 42, 7, 2 }, { 294, 7, 3 }, { 10, 11, 1 }, { 110, 11, 2 }, { 12,
13, 1 }, { 156, 13, 2 }, { 16, 17, 1 }, { 272, 17, 2 }, { 18, 19, 1 },
{ 342, 19, 2 }, { 22, 23, 1 }, { 28, 29, 1 }, { 30, 31, 1 }, { 36,
37, 1 }, { 40, 41, 1 }, { 42, 43, 1 }, { 46, 47, 1 }, { 52, 53, 1 },
{ 58, 59, 1 }, { 60, 61, 1 }, { 66, 67, 1 }, { 70, 71, 1 }, { 72,
73, 1 }, { 78, 79, 1 }, { 82, 83, 1 }, { 88, 89, 1 }, { 96, 97, 1 },
{ 100, 101, 1 }, { 102, 103, 1 }, { 106, 107, 1 }, { 108, 109, 1 },
{ 112, 113, 1 }, { 126, 127, 1 }, { 130, 131, 1 }, { 136, 137, 1 },
{ 138, 139, 1 }, { 148, 149, 1 }, { 150, 151, 1 }, { 156, 157, 1 },
{ 162, 163, 1 }, { 166, 167, 1 }, { 172, 173, 1 }, { 178, 179, 1 },
{ 180, 181, 1 }, { 190, 191, 1 }, { 192, 193, 1 }, { 196, 197, 1 },
{ 198, 199, 1 }, { 210, 211, 1 }, { 222, 223, 1 }, { 226, 227, 1 },
{ 228, 229, 1 }, { 232, 233, 1 }, { 238, 239, 1 }, { 240, 241, 1 },
{ 250, 251, 1 }, { 256, 257, 1 }, { 262, 263, 1 }, { 268, 269, 1 },
{ 270, 271, 1 }, { 276, 277, 1 }, { 280, 281, 1 }, { 282, 283, 1 },
{ 292, 293, 1 }, { 306, 307, 1 }, { 310, 311, 1 }, { 312, 313, 1 },
{ 316, 317, 1 }, { 330, 331, 1 }, { 336, 337, 1 }, { 346, 347, 1 },
{ 348, 349, 1 }, { 352, 353, 1 }, { 358, 359, 1 }, { 366, 367, 1 },
{ 372, 373, 1 }, { 378, 379, 1 }, { 382, 383, 1 }, { 388, 389, 1 },
{ 396, 397, 1 }, { 400, 401, 1 }, { 408, 409, 1 }, { 418, 419, 1 },
{ 420, 421, 1 }, { 430, 431, 1 }, { 432, 433, 1 }, { 438, 439, 1 },
{ 442, 443, 1 }, { 448, 449, 1 }, { 456, 457, 1 }, { 460, 461, 1 },
{ 462, 463, 1 }, { 466, 467, 1 }, { 478, 479, 1 }, { 486, 487, 1 },
{ 490, 491, 1 }, { 498, 499, 1 } };
pk = SortBy[lst,First]
count=0;
subsets[subset_,total_,list_]:=(
Print[count++];
If[total== target ,Sow[Partition[Flatten[subset],3]]];
If[list!={}&&total+list[[1,1]]<= target,
subsets[subset,total,Rest[list]];
subsets[{subset,list[[1]]},total+list[[1,1]],Rest[list]]
]);
Reap[subsets[{},0, lst]][[2,1]]
According to my test, the above code has been running for a long time without ending or seeing any improvement in efficiency. So I terminated it.