JAK, that is a lot of data to process. And it is always difficult to try to write formulas without access to the actual sheet and data. That said, SPLIT/JOIN combos would exceed character limits with that much data. But in theory, the following formula would work (assuming your actual data is an extension of your example and runs from A1:Y.
=ArrayFormula({"ID","Value","Qty"; QUERY({VLOOKUP(MOD(SEQUENCE(COUNTA(A:A)*COUNTA(A1:Y1),1)-1,COUNTA(A:A))+2,{ROW(A:A),A:A},2),HLOOKUP(ROUNDUP(SEQUENCE(COUNTA(A:A)*COUNTA(A1:Y1),1)/COUNTA(A:A))+1,{COLUMN(A1:Y1);A1:Y1},2),
VLOOKUP(MOD(SEQUENCE(COUNTA(A:A)*COUNTA(A1:Y1),1,2)-2,COUNTA(A:A))+2,{ROW(A2:A),B2:Y},ROUNDUP(SEQUENCE(COUNTA(A:A)*COUNTA(A1:Y1),1)/COUNTA(A:A))+1)
},"SELECT Col1, Col2, Col3 WHERE Col3 IS NOT NULL ORDER BY Col1 Asc")})
If you're wanting to set this up in a separate sheet, you'll need to edit every range throughout the formula to include the name of the sheet where the original data resides.
For more on the basis and explanation for this formula: https://www.benlcollins.com/spreadsheets/unpivot-in-google-sheets