```\nconstructor(address[] memory tokensToList, uint256 mintAmount, string memory name_, string memory symbol_) ERC20(name_, symbol_) {\n  // Basic exchange configuration\n  Config memory config;\n  config.unlocked = false;\n  config.oneMinusTradingFee = 0xffbe76c8b4395800;   // approximately 0.999\n  config.delistingBonus = 0;\n  DFPconfig = config;\n\n  // Configure the listed tokens as such\n  TokenSettings memory listed;\n  listed.state = State.Listed;\n  require(tokensToList.length == 15, "Incorrect number of tokens");\n  address previous = address(0);\n  address current = address(0);\n  for (uint256 i = 0; i < 15; i++) {\n    current = tokensToList[i];\n    require(current > previous, "Require ordered list");\n    listedTokens[current] = listed;\n    previous = current;\n  }\n\n  // Generate the LP tokens reflecting the initial liquidity (to be loaded externally)\n  _mint(msg.sender, mintAmount);\n}\n```\n