Choosing a Software Idea

==================================================================================================================++++++==+==+=========++==++++=========+=====+===========++=======================---=-=----------=====================+====+=====++=++++++++++++===========--------==-=-----====================+=++++=+++++++++=+=====++=+==+++++++++++++++++++++++++++++++=++++====+=+++++++++++++++++++++++
==========================================================================--=-----=============================================================================================++=======------------------------------=-==============================+============---------------------------===============+++++++=========+=+===========+++=++++++++++++++++++++++=++================+++===========+===++++++
============================================-=====-----===-===============-=------=====================================================================================+==+==+==++=====----:::::::--:-:--------------=====------===============================---::::::::------------------==-===========+++++==========================+==+++++++++++++++++++++++=========================+==========++=++=+++
===================--=======================--=====-==------==============--=-----===========================================================================+===++++++=++++++=========--::::::::::::-------------------------==-==-====+======+=============--::::::::::::::----------------------========================================+++++++++++++++==+==++========================================+====++
==========================================---==-=======------======---==---------================================================================================+++++=+==+=============---:::::::::--------:---------------------=========================--::-::::::::::---------------------=--=========================================++++=+++++++++=++==+===++=======================================+===+
===========================--=-==-=======-=====--=====++==---=----=--=--=-------=======================================================================================+=============------::::::::::-::----------------------=--=========================--:--::::-:-:::::-:::---------------=====-=========================================++++++++++==++==++++++++=+=======================================++
--====-======================--=---===---=====-======+++++++========--==-=-------=---===============================================================================================--------:::::::::::-::--------------=----------====================--------::::--:-::-:::--------------=----------=====================================++=+++++=+++++++====++============================+==================
---==-==-=====-==-=-------=------=-------=--====-==++++++****++=++**+===--==-------------------=-====-==========================================---==-============================----:::::-::-:-:::::::----------------------------==================--:-::------:----:--------------------=----------===================================+++++++++++=+=++++====================================================
-------==-===----=-----=-------------------=======++++++*************+=======---------------------===-=========================-===========-------===-===========================----::-::-::---::-:-:--:--:::----:---------------------=---========----:::::--------------------------=-------==-=---=-=================================+++==+++++=++++++=====================================================+
------=---------------===--------==-----========+++++=+**********#****=====-----------------------===----==========-----===---==========----=--===-==----========================----:------:-:::--:---------::------------:--------------------------:::::--::------------------------=-------==========================================================+======================================================
--------------------------------=-----======+++++++++++**#*#*#*#******+=====---------------------=--==-=======----------===-=========-----------------------=============---====--------------------------------------------------------------------------:----------------------=------------==========================================================++=++===================================================
------------------------------------=====+++++++++++++*********#*******====--------------------===-===========---------=====--==-==------------------------------======----------------------=---------------:::--:::-------------:--------::::---::--------:-----------------===--==-=-------==========================================================++=+=====================-==============================
-----------------------------------==-++++++++++++++++**********#***#***+=-=-------------------=-----==-==-=---==----==-----------------------------------------=========-----------------------------------:----::--------------------:--:---------------------------------=-==--====--=--================================================================================-==-=================================
---------------------------------===+++++++++***+++++++*#******************=--------------------------====---------=----::::::::-::::::::----------:----------=-=-=-==-==-----------------------------------------------------------:-:----------------------------------------===========================-===============================================================---===-===============================
---------------------------------==+++++++++++*++++++****#*******#**********===----------------------=-==-------------::::::::::::::::::::-::---------------=======--------------------------------------------:---------------------------------------------------------------------===================-================================================================--=--=---=============================+
---------------------------------+++++++++++++**+++++****#*******##**********+==-=-----------=---------=-------------::::::::::::::::::::::-:::-------------=--=-=--=--------=----------------------------:----------------------------------------------------------------------=========================================================================================-==-====-===================-=========
-------------------------------+++++++++++++*++++++++*************#**#********===--------------=--------=-----------:::::::::::::::::::::::::::::----------=---------------------------------------------:::----------------------------------------------------------------==-===========================-==================-=-----=======================================-====================================
-----------------------------==+++++++++++++++++++++****************#**********===-----------------------::-----------::::::::::::::::::::::::::------------------------------------------------------::::--::---------------------------------------------------------------=-============--===-==========================-----=--------=======================================================================
----------------==---==----=+++++++++++++++++++++++***#*************************===---------------------:::::--:----::::::::::::::::::::::::::::------------------------------------------------------:::-:-----------------------------------------------------------------=--=========-=----=---====-=--=============--------------======-====-===============================================================
--------------=+++++*++++=+++++++++++++++++++++++++************************+****+=---------------------::::::::::::::::::::::::::::::::::::-::::::----------::--:-::::-:-------------------------------------------------------------------------------------------------=========-=-=========-====-----=-=-==========-----------===============================================================================
----------=++++++++*****+*+++++++++++++++++++++++++*****#***********************#=--------------------:::::::::::::::::::::::::::::::::::::-:::--::----------:::::::::::::::::----------------------------------:::-------------------------==--------------------------=-==-========-=====--==----==--------====---------==-----================================-==============================================
------==+=+++++++++*#******++*+++=++*++++++++++++++*****##***********************+-------::::---:-:-::::::::::::::::::::::::::::::::::::::::::-:::::-:------::-:::::::::::::::::-----------------------------::-:::------------------------===-----------------------------=-========--------=====----=-----------=--=-----=----========================-======-======-==--=====================================
==---=++++++++++++*####***++**++++++**++++++++++++++*****###******#*******#*###***=---------:::::---:--::::::::::::::::::::::::::::::::::::::::::::---:-:----:::::::::::::::::::::::-::---------------------------------------------------------=-----------------------------===-----------------------------=-=----------==========================-===========------==-==-===================================
++++++++++++++++++*####*******++++++*++++++++++++++*******##*****##***#*****#*****+--::------:-::::::----:::::::::::::::::::::::::::::::::::::::::::-:--------:-:::::::--::----::---:---------------------------------------------------------===-==----=--------------------=----------------------=------=-=-=----=--=---=====--=================---==----===-------==--=-===============-====================
+++++++++++++++++**#####**++**++++++++++======++++++*****####***#*#**********##**#*+***==---=+-:::::::::::::::::::::::::::-::-::::::::::::::::::-:-:---------:::::::::::::-::----:-:------:-::--:-::------------------------------------------===-==----------------------------------------------==========--=======--=======-===---===============-------------===============================================
++++++++++++++++++*#####**+++****++++++=+++==+++++++++******##********#*****#****#**#**********+--::::::::::-::-:-:-:--::-:-::-:::::::::::::::::::::::::::::::::-:-::-::::--:--:::-:--::--:::---::::-:--------------------------------==---=---------=----------------=--------------------------===========================-=-=-=--=======================-====================================================
++++++++++++++++++*#####**++++***+++++++++++++++*****+*******####*#**#********###*######***#**#**-------::::---:::::-------:::::::::::::::::::::::::::::::-::-:-------::::--:-------:--::-:::--:--------------------------------------==-------------------------===-===--------------------------==============================================================================================================
+++++++++++++**+***####***++++***+++++++++++++++**************##******#****############***********=---:::::::-:::::---:-----::::-----:---:-::::-::::::::-----:-:----:-:-::----:---------------------------=------------------------------------------------=++---=--=--===---=-------------------====-========================-======================================================================-==========
++++++++++++****#####*****+++++*+++++++++++++++++**********##**##****###***####**#########******##*+---------:::--------------------------------:----::-:::-------------------------------------------------------------------------------------------=#+===*%#+===-==--------=-----------------=============================-===================================================--====================--=======
++++++++++++****####******+++++****++++++++++++++*****#***###**##*****##**********########***##**##**------::-::------------------------------------------:::----------------------------------------------------------------------------------------=+#%+==+#%%#=======-----==-----------=-----=--========================================================================-===-----====================--======
++++++++++++**#####*#****+++++***++++++++++++*+*+*****########*###****#*******##**#######*******#####=------------------------------------------------------------------------------------------------------------------------------------------------+*#%*+*%#%@%===============-------------==-==========================================================-----=-=-==-=-------------==--=-============-========
+++++++++++****####******++++****++++++++*++*###*****#*############********#*******######*****#*#####*=---:-----------------------------:-----------------------------------------------------------------------------------------------------------==-*##%%%%##@@@@%%%##*##+++=-==-----------==-====--==========================================---=---=-------====--==------==-=-=-====--========-============
+++++++++++****###*******+++***+++++++++*++**######*#*######*#########****###*****#**####*****####*##**---------------------------------:-----------------------------------------------------------------------------------------------------------===+#%%%%%*%%%@@%%%%%%%%%%%#*+========---==--==================================---=============-=---------=============--=----=---=-----=======--===========
++++++++++*****####******+++**++++++++++*+***##########################*##*###****#######******####*###+---------::-------------------:-:::-:----:----------------------------------------::-------------------------------------------=--=----------=+%%%%%%%%#%%@@@@%%%%@@@@@@%%%*###+-====--========================================---====------------------=--=-==---------------------========-=====-=====
+++++++++******###*******++**++++++++++++*****#######################**########****##*###*****##*####***=-------------------------::--::-::--:-:----------------------------------------------------------------------------------------------------=#%%%%##%%%%%@@@@@@@%%%%%@@@@@@@%###*#*+================================-===============---=------------------------------------------------=-==--=-=--=====
#*+++++*********##*****+++**+++++++++*+++**##########################**##**####****#*#####**#**#####****+--:--------------------------------------:---------------=-----------------------------------------------------:------------------------+#%%######%%%@@@@@@@@@@@@%%%@%%@@@@@@@@@#%#*++===========================================---------------------------=-=----------------------------=---========
###*+++*******#*###***++++++++*+*+**+++*+**#############################***######**##########**########*++--------::-:--------------------------------------------------------------------------------------------------------------------------+#%%########%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%#*+*++=======================-=============-==-------------------------------=-----------------------------------====
####*******+**#####**+++++++++**+++++**+++*###########*#**##############*#*###################*#########***==----::-:::::-----:-------:----------------------------------=----------------------------------------------------------------------=*%**##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**++=+====================-====---=--======---------------::::::------------------:-:-:----------------==---=-=====
######*#*++++**###**++++++++++*++++++*++++**######################################****########*##*########**=----------:-------==---::-----------------------------------------------------------------------------------------------------------***##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*+=+=======================---------------:----------::::::::::-----------------------------------====---==-====
#######**++++***###+++++++++++**++*++++++++*########################################*###########*****######***+*=---------==+++++++--::---------------------------------------------------------------------------------------------------------=#*###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+*=============---=-=-----------------:------::-:::::::::::::------:-----::--:-------------=--=======--=======
#######**++++*****+++++++++++++**+*+++*++++*##################################*####*#*########***#****#####****+*+----=====+++==+++++=------------------------------------------------------::-------------------------------------------------+**#####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+*+=========-=-------------------------------::::::::::::::::-::------:-:--:------------=--======-==========
########**+++*****+++++*+++++**+++++*+++++*########################################***#*##******#*#****#*###******+=++=====+++=++*++++*+=---------------------------:--:-------------------::::-:--------------------------------------------=+#**####%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*====----=-------------------------------:::::::::::::::::::::--:-------:---------=-=--=--=--=--=========
#########****++*+++++++++****+++++++++++++*###################################*####****######***###*#**#######*****+=+==++++++++***+****+=--------------------------:-::--:::::----------:-:::::::-:-------------::------------------------=+****#%%%%%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%*+====----------------------------------:::::::::::::::::------------------------------------=----======
#########****++++++++++*****+++**####*+++**#*###############################*#**####*######*#*#*##*###*######*##***+=+=+===++==+******+***+-----:--------:-:-::::::::::::--::-:-----:--:-::::::::::-:-::::---------------:----------------=***##%##%##%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***#===----------------------:---------:--::::::::::::::--------------------------=-----====-------=====
###%######**++++++==+++*****++++*####**+*****############***##################**###########**##############*###*#****+++===+==+***+********+=-------:---:::-:::::-:::-:::::::::::-----::::::::::::::::::::::-----------------------------****###%%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=====----------------------------------::::::::::--:----------------------------=-==========-----=====
##########*+++++++++++****++++***###%#****+**##########*****#################****###########*#*#############*####****+++++++==*++***********++---::::::::::::::-::--::::::---:::-::::::::::::::::-:::::::::-----------------------------#**#%#####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*====------------------:----::----:-----:-::-:::::-----------------------------=============-----=====
######%###*++++++++++++++++++++**##%##**+*****##########****################****##############**#############*####****+++++++++**********+**+++--::::::::::::--::::::::--::::::::::::::::::::::::::::::------------------------------==***#####%%#**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+====--------------:::-::::::::-::-:----------------------------------------=====-======--------=====
###########*++++++++++++++++++++####%#*********#########*##################****################**#################****++++++++++**********+**+++--:::::::::::---::---::-:---:-::::::::::::::-::::::-:---------------------------------*+**#%##%%%##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+===---------:::-----:::::-:::::-----:-----------------------------------======---=--===----=-======
##%##########*+*+++++*+++++++++**#####*****+***######################*#######**##################**################**#++=+++++++***********+***+=---:::::::::-------:--:-------:::::::::::::::-:::::--------------------------------=+*####%#%%%#%%@@@@@@@@@@@@%%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+===-----------------::::::::---------:----------------------------------====-----------------====
##%%%##########**++***++++++++++*#####**++*+**##*######################*#*####****###############**#################*#*+++++++++*++++**********++--:-::::::::::-----------------:-::-:-----:::::::-::-------------------------------=*#%%@%#%%%%@@@@@@@@@%*+--===+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%*+===-----------:--::-::::::::::::::----------------------------------=--===-=---------------====
#%%######%##%##*****+++++++*******#####***++***#**#####################***##########*###################**#############+++++++++*+++************+==----::::------------------------------::::::::::::------------------------------==*@@@@%%%%%@@@@@@%%#+==----===*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#**+=---------------------------------------------------------------=--===-=----------==------===
##%%####%%##########*+************######**********#####*################**#*########**######*############**##############*+++++++*****************+=------------==-=------------------------------::--:-----------------------------=*#@@@%%%%@@@@%++++===-----===*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%#*====---------------------------------------------------------------------------==-=----=--===
####%#%%#%##%%#########***********#####**#********####*##*##**###########*##*######*#########**#########*##################**++********+******+***+==-------====++=+===-------------------------------------------------------------=*%@%%@@@@@%%*+=====-------===#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%#*+==-----------------------------------------------------------------------------------------==
##%#%%%#%##%%%##########***********#*****#********####***###***##############################***####*##*##################*##*******++*+************+=--===+++=+++++++++++==----------------------------------------------------------*##%%%@@@%*=---------------+%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###**++==----------------------------------------------------------------------------------------===
#%%%%#######%%%##########**********#*************#*##***++*##**##############################*#*#####*#**#####*###**###########*****++++++***********++++++++++++++++*++++*++=------------------------------------------------------------=+**+==---------------+%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##***=====-----------------------------------------------:---------:------------------------------==
################%%%#######************************#**+******#########################*########*######**##########*#*###########**#*+**+++******+*******+++++++++++++++*++++++===--------:---------------------------------:-------------------------------------#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**+++==+==-------------------------------------------::-:-------------::--------------------======
##%##############%#%#######**********++**+***+****#****+**+***################################*##########*########################***********************++++++++++++**+++++++++=--------------------------------:-:-------------------------------------------*#%%%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*#+======--------------------------------------------------------::::-:-------------------========
#%%##%%##########%%##%%%%#####**+**+*++++**+**++****+++***+******#####################*#*############***############################************+**********+++++++++++++*+++*+++++---------------------------::-::--------------------------------------------=##%%%@@@@@@@%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****+++===------------------------------------------------:::::-:------------------------========
#%%###############%%%%%%#%%%%%#*++*+++++++****++**++*+++*********####################********##########*#############################********++**++**********++++++++++++++++*+++++---:-----------------------------------------------------------------------*#%%%%@@@@@%%%%%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@%%%%%#***++====----------------------------------------------:-------------=---=---------===========
####################%%%#%%%%%%%%******+++++***+**++****++********######################********#*#######***############################***++++++*******+*******+++++++++++++++++++++=---:---:::::--------------------------------:--------------:------------=%#%%%@@@@%%%%%%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@%*#%%####+==----=--------------------------------------------------------=------=-================+=+
##########%###%%%%%#%%%%%%%%%%%%%#**+++++++********+******+******######################****##***#######**##############################****++++++****************+++++++++++++++++++++==-----:::--:::::-------------:-::---:-------::::::::::----------------=#%%%@@@@%%%%#%#%%%@@@@@@%@@@@@@@@@@@@@@@@@@@%%%#*#%##+*++==-----------------------------------------------------------=========+++++++=+++++++++++
%%%#########%%%%%%%%%%%%%%%%%%%%%%%#**+*++++++******+*********####*######################*######**######################################*+++++*+*+++*****++******+++++++++++++**+++++++-----:::-:---::--::------------:-::::-:--------:::-::::---------------+%%%%%@%%%%###%#%%@@@@%%%%%%%%@@@@@@@@@@@@@@@@%##+*+**++=---=----------------------------------------------------========++++++++++++++++++++++++++
#%%%%%#%####%%%%%%%%%%%%%%%%%%%%%%%%###***+***+*******#********##########################*#########*######*#*############################***+++++*+++******************+*++++*++*****++++-----:--------:------:---------------------------------------------+%%%%%%%########%%@%@@%####%%@@@@@@@@@@@@@@@@@@%##++++*++==-==------------------------------------------------=======+++++++++++++++++++++++++++++*+
##%%%%%%%%%#%%%%%%%%%%%%%#%%%%%%%%%%%%##**#****++*****####*******##################**#**##*################**###############################***+****+*+********************************+*+==------------:---:---::------=--=-------------------------------=*#%%%%%#######%%%%%%%%%####%%%@@@@@@@@@@@@@@@@@@@###+==+===----------------------------------------====+=======-==++++++++++++++++++++++++++++++++++
###%#%%%%#%##%%%%%%%%%%%%%%%%%%%%%%%%%%##*****#***+****#*#********#####################**#*##*##############*###################*#*##########******++++*****++*+***************************=+=---------========================----------------------------+#%%%%%#####*#%%%%%%#%###%%@@%%%%%%@@@@@@@@@@@@%%%%%**+==+===--------------------------------======++++++++++++++++++++++++++++++++++++++++++++*+++++
##############%%%%%%%%%%%%%%%%%%%%%%%%%%%###***#***++***************#####################*******###*#####%#########################*###########****++++++*+*++++***************************+*+==---=================================-------------------=-=*#%%%%%#%######%%####%#%#%%%%%#%%@@@@@@@@@@@@@@@@%@%#*++==++======----------------------=---=++++++++++++++++++++++++==+++++++++++++++++++++++++*****+
#########%###%#%%%%%%%%%%%%%%%%%%%%%%%%%%%####**#*********#*********#**########*##########*****################################*##*#############***++*++++++****************************+*++*+++++===============================+====------------------**##%%%%#%##################%%%%@%@%@@@@@@@@@@@@@@@@@%%*=+=====--------------------===+======++++++++++++++++++++++++=+++=++++++++++++++++++++++**+*+*++
#################%%%%%%%%%%%%%%%%%%%%%%%%%%######*******+************#######################*****###########################%######*#############***+++++********************************++++*++++++=+==========================+++++======-=---------=**##%#%####*###*####%###%#*###%@%%@%@@@@@@@@@@@@@@@@@@@%+*+========-----------====+++++++++++++++++++++==++++++++=+++++==++++++++++++++++++++++**+*+***++
#####################%%%%%%%%%%#%%%%%%%%%%%%###%%#********+*****++****############*#############**###########################%#####################***++++***************+*************++*++++++++**++=+===============+==++=====+++++++=============+*####*#####**#****#####%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*===========-====++++++++++++++++++++++++++==++++++++=+===++++=+++++++++++++++++++++********+++
########################%%%%%%%%%%%%%%%%%%#%%###%%###********+*******#***#####################################################%######################****+*******************************+*++*++***+**++++=======++===+===++++++==++++++++===+++++=+++*#########*#****###%#####%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@**++=++++=+++++++++++++++++++++++++++++++++++++++++++======+++++++++++++++++++++++****+***++*+
##########################%%%%%%%%%%%%##%%%%%###%#%######*******+++*++*******#######################*#######*##################%######################********+***************************+++*+++****+****++======+++++++====++++++++++++++++=+++++++*####***###***###*#####%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*++++++++++++++++++=======++++++++++++++++++++++==========+++++++++++=++++++++++*+****+++**
#########%%%###%#######%###%###%%##%%%##%#%#%%%###############***#*******+******####################***################################################*****+*********************************+++++++********+++===++==========+++++++++++++++++++++*####*#####**#*#**######%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%*++++++++++++++====+++++++++++++++++++++++++++++++==+++++++++++++++++++++++++****+**+***
############%######%%########%##############%%%%%%############************++****#####################******##############################################******++***************+++++**********++**++++*********+++++++++++==++++++++++++++++++++++*#######*#####*########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++*******
###########%#%%%%%%%%%%##%##############%###########%##############*************##########*###############**###############################################*****++++++***++*****+**++++***+*+**+++**+++++**********+++++*+++++++++++++++++++++++++++#################%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++*+***+++++****+
##########%#####%%%%%%%%%%%%##%#%%%#%#%%%###########%%################*###**********########***##############**###**#########################################*****++++++++++++*******+++++++++++++++++++++*********************+++++++++++++++++++++%###*#%#####*##%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++**+**
####*##########%###%#%%%%%%#%%%###################%#%%#####%##%##############**********#######***#############********#############################################***++*++++++++++****+++++++++++++++++++++++********++**+*****++++++++++++++++++++#%##*%%%%######%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##%%##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+***
##############%%####%#####%#%%##%%#%#########################%%#################*#**#*****########################*******############################################******+*+++++++++***+++++++++++++++++++**++*++**+++**********#*+++***++++++++++#%%###%%#%####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++*++++*+**++***
############################%%%##%########################%####%###############**#*#*********#######***#############********##########################################********++++++++++*++++*****++++++***++*++++++*****+*++**#%%%%######***+++++++#%%%#%%%%%#%%%%%@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@%%%%%#*++++++++++++++**++++**+++*++++++++++*+*+++++++**++*+****
#####%#############################################%########%%%%##%##################***********#*************########*****#*############################################**********+++++++++++++*+***********++*+++++++++****##%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%%@%@@@@@@@@%%%*++++++++****+*++++++++++++++++++++++**********+*******
#####################################################%#########%%%#%%#####%#############*****++*****************#########**###########################################**#####**********++++++*+++++***+********+**+++*++*+**%%%%%%%@@%%@%%%@%%%%%%%%%%%%%%%%%####%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%###%@@@@@@@@@@%%#*+++++**+**++++++++++*+++++**++++********************
########################################*#######################%%%%%%###%########%###########*********************###########*##***##########################################************++++++++++********+**+*++**+*++**##%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%##%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@#*++****+**++++++++*+**+********++******************
######%###################################%##############%#%###################################**************************##################*#####################################*************+++++++++***++******++***++**%%%%@@@@@@@@@@@@@@@@@@@@@%@%@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%@@@@@@@@@@@@@%***+++++++++++************************************
*######%%############################%################################%%##%#########################*************************#*#**####*########################################*#####*##******+***++++++++++++++******++++#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@%**+***+*****************************************
**###****####################***#########################################################################***********#*###*#####***##**###*#****#**##########*##################******###*******************+++*+*+********%#%%@@%#***#%%@@@@@@@@@@@@@@@@@@@%@%%@######%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*****+++***************************************
#**************###############***###########################################################################************************#####**********#*##**#######***#######**####*#*#******##**********************+++*****#%@@@@#**********%@@@@@@@@@@@@@@@@@@@#######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%%#*******************************************#
*####********##*#*##*#*##############****##*##################################################################*********+******************###***********##****************######****#************************************##%@@@%*************##%%%%%@@@@@@@@@%%###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****#**************************#*#**
***#####*#******###*******#############**********###################################################################******************++++++**#*#*##*************************#####********###****************************##@@@%#********************#%#%%%@%####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*#**************************####
****+****#***********#*******############*****************#################################################################**#**************+*+*************************************************************************##@@@@#*************************#%####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####****************#**#*****###*
****+++**********************#*****#*##********************+***###################################################################****************++++***++*++*********************************************************###@@@#*************************%####%%%%@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********#*###*********#####*
*******++*****++****++**********************************##******##############################################*##########################**************++***********+***++*******+++**********************************#*#%@@@************************%###%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#********###*#*******########
****#******************+***************++++********#***************##**############**##*#####*####*#****############################################*******#*********************++++++++*****+++++***++***************#%%@@@*********************##%%%@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####*#######**##############
************++****************+******++++++++++**************************++***####********##############**#****###**########################################*****************++++++++++++++++++++++++*+*+++++++*****+###%%@@@%***+*+*++*******#%%%%%%%@@@@@@@@@@@@@@@%%%##*****#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%@%#########**###############
#*##*****######*#****************+++****+*********++**++++++++***************+***********###############*#*********########################################*#*#*****#****#***********++++++++++*++++++++++*+++*******%#%%%@@%#+++++++++***+**#%%##%@@@@@@@@@@@@@@@%#*************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%@@@@@@@@@@@@@@@%##########################
*#*####*****####*#*#####*********##**++++**+**************************++++*+*******+++************#*#########***#************####*############*##***#####****###***************#****************++++++++**+++*+******#%@%%@@@#**************%%#%%%%@@@@@@@@@@%%%#*****************####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%#########################
#####*#######***##**#****###***************#############*************************************************#*##########****#***#####******#*******####*****************#*************************************+*+********#%%@@@@#*************#%#%%%%%@@@@@@@%#************************##*###%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%%###################*###*
***######****************************#****##################*****+***********************************************########******##***************####***********************##******************************************%%@@@%%%%%#*********#%#%%%%@@@@%#*#********************#**********######%%%%@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%#%@@@@@@@@@@@@@@@@%%%%###############*******
###*#*####***********++***************###########%%#%%%###%#####*************************************************++**************#*#**************#*###*#**#*****##**********+++++*****************************+*******#%%%%%%%%%%#*********%%%%@@@%%####*****************++******************#***##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##%@@@@@@@@@@@@@@@@@%%%####*#*#######*####*##
##*#######*#######********++*****################%###%%%%%%##%##*************************************************************++**********************************************++++++****************+++++++**+**+********#%%%%@@@%%%*********%@@@@@@@%#**+**********+++++*********************************###%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%@@@@@@@@@@@@@@@@@%#%###*#*######**##*##***
*###****########%%%#********#######################%%#%%%%%%%###********************************+********************+****+********++******+++++************************************************+++++++++********+*******@%%%@%%%%%*********#%@@%%@@%******++++++++++++++************+++*++*****+*********#**##%@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@%###%%%@@@@@@@@@@@@@@@%%#%###*########**######*
############%%##%%####**##*****##################%%%##%%%%%####*****+***++++***+*+++++++****++++++++++++++*+++++++++++************++**+++++***+++++++*+++++*******++******************++**++*+++**************************%%%@%%@%%**********%@@@@@@%********************************************###*#*##******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*##%%@@@@@@@@@@@@@@@@@%%#%##**#######**#######
#####%%######%%%%%%%###%######*###########%#######%###%%%%%%###*****#****#***+*++++*++*+*****++*+++++**+*******++**********+++++***++**++******++++****++***+********+++++++++*********+**+******#**************************%%@%@%%***+***+***@@@@@@@*****++*******************************++**************##**#%@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%##**#%%@@@@@@@@@@@@@@@@@@%%###**********#*###***
####%%%%%%#%%%%%%%%%%##################*##%########%%%%#%%%%%#####*##%##*****************************************##*#####**************************************+*********#**********+*****************************************#%%%#******+****#@@@@@@#*********+**************************#**********#*#*#******#%@@@@@@@@@@@@@@@@@@@@@@%%@@%%@@@@@@@@@@@@@@@%########%%@@@@@@@@@@@@@@@@@%%%%##**###*##########*
###%%%%%%%#%%%%%%%%%##%%############%######%#%%#####%%%%%%%%%%################*#*************#**********##*#***########****######***#***###*###******#**##*#*#*******#***#*****###*********#**#########*************************##*****#***++**%%@@@@%************************####***###*###***#*##*#***###*##*##%%@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@%#########%%@@@@@@@@@@@%%@@@@@@%#############****##*
##%#%%%%%%%%%%%%%%%%%%%%#############%%########%%%%%#%#%%%%%%%####**#############************#*#######**###############***#########*#*****#*#***#*#############*#***#####*#*##*##*#***#########**########****#***####*****#************##****+*#@%@@@@#****######********###*#*#*##############**###############*#%%@@@@@@@@@@@@@@@@@%%##@@%@@@@@@@@@@@@@@@%#####*####%%@@@@@@@@@@@@@%@@@%@@%%%##***************
##%%%%%%%%%%%%%%%%%%%########################%%#%%%%%%%#%%%%%###########%########*****#*##############*##*######*#############*#*#####*****##########*###*#*###########*#*######*******#########***#######******#*#########***#****##**####*****#%%@@@%****######**###****#######################*##*#############%%%@@@@@@@@@@@@@@%%#*##%@@@@@@@@@@@@@@@@%#*#########%%%@@@@@@@@@@@%@@@@@%%@%###***************
##%#%%%%%%%%%%%%%%%%####*###########%#%%%#%###%#%%%#%%%%%%###############%##%%##*#*#******######%%#######**************************+++***+++++******#*####*####***************+++++***************************##***########***#**###****#**#***##@%@%@%%******####*####***###*###*#****#######*********###***#*####%%%@@@@@@@@@@@@%#######%@%@@@@@@@@@@@@%##########*#%%%@@@@@@@@@@@%@%@@%%%%%%%###******+******
##%##%%#%%%#%%%%%%%%########%########%#%#####%%%%%##%#%%%%%%##########%%%%##%%%#####**####################*******+++***++++*****+**+**************#####*######****++++*++*++++++++**+*+********************+++******#*#*****#*********#****#****#%@%@@%@@%*********#**************##***#***#######*#**##*********###%@@@@@@@@@@@@@%####**#*#%%@@@@@@@@@@@%###********#%%%%%@@@@@@@@@@@@@@%%##**##**#***+*++*****
###%%%%%##%%%###%%%###########%########%%#%%##%%%%##########################%#####******###*#################*****#******+++************######*################*****++++++++++++*+***++++++*++++++*****+****++++*********************************#%%%@@@@@#**************+*****************************************##%@@%@@@@@@@@%##*#*****##%%@@@%@@@@%@@%**********#*%%%%%@%@@@@@@@@@@@@@%%#***#**************
####%%%%%%##########%%%#######%##################################################*#*######################################*+*********###****#******#########****#*********+++***++*********+++++++++++++++++**+++***+++++*+**++**++**+*+++**+*****@%@@@@@@%#*+****+***+*+++*++*+***********************+*++**********#%@@%@@@@@@@@@##**+****##%%@@@@@@@@@@%************#%%%##@%@@@@@@@@@%@@%#%###****#**#*******
#############****#####*###############%%########*****#*#**##***###***#######****##****#*##*#######**##*####%%%############*******+*+*+*******************************+**************+*********+****++*********+**+++++*+++++*+**+++++++++++**++***#@@@@%@@@%#%#*********+++**+++*********+***+********+******+**+*****#%%@@@@@@@@@@%##********#%%@%@@%@@@@@#**********##%%%%#%@@@@@@@@@@%%%@@%%*##**************
*#***########************##*######*############*****+***#********************************#*****###*******#**###*#########*****++***+++*****+++++++******++*+*++++**+***++**+****************+********+++******+++***********+*****+++++++***++*++***#@@@%%%%%%##**********+*********+++*+*****+*****+***++***++*****+*##%%@@@@@@@@@@%##********#%%@@@%%@@@@@#**********#%%%%%%#@%@@@@@@@@%%%%%%##***************
*#****************************#####***#####*+++***********************+*****+*****************************###**###*###**#******###***********+++++++++****+**+++++***++**+*****++++*************+*+**+*******************++++++***********************%@%%%%%%%%%%******++*+********************************************#%@@@@@@@@@@@@#*********#%%@@@@@@@@@@#***#*****##%%%%%%%%%@@@@@%@@%%%%%%%#**************
***##******+***++***++++++***##****++***************++++++**++**+++++++++++++++++++++********+*****************+*+*+++++*+++++++++***+++******++++++++******+*++***+*+++++++++++++*++++++++**+++*++++++++++++*+*++++++++++++++++++*++***+**+++**+++***#%@%%%%%%%%%********+***+*****************************************##%@@@@@@@@@@@@***********%%@@@@@@@@@@%#********###%%%%#%#%@@@%%%@@%@%%%%#%#*##*********
****************++*********************++++***++++*+***++*******************++++++++++**++*******+++**********+++++***+*++++++*****+++++++++*+*+++++++++**+++*****+*++++++++++++++++++++++++++*+****++++++++++*+++***********+****+++****+++**+***+*+**#%%%%%%%%%%#******************************************************##%%@@@@@@@@@@%*#********##%@@@@@@@@@@@%#*********##%%##%#%@@%%%%%@%%#%%#########******
**********+****+*****************+++**+++*++=++=+++++*+**+**+******************+++******************+***********++++*+++++++++++*++*+++++++*++++++++++++++**+*****+*++++++++++++++++++++++*++*++**+****+******+********+****************+*++***++++++***%@%@%%@%%%#**********+*******#**************#*********+***********#@@@@@@@@@@@@@%*#********#@@@@@@@@@@@%%%**********####%#%#%%%%%%%%%%%#%%##*####*##**#*
****++******************+***********+++*++++++++++*******+*+********#***********+*+*********++*+*****+*+*******++++++*++++++++++*+++**+**++++**+*++++++++++****+++**++++++++*+++++++**+++++*********+*****************************++++++*******+++++*****#%%%@@%%%***********+*****************+************++++**********#%@@@@@@@@@@@@%*********#%@%@@@@@@@@@%%%***********##%%%%#%%#%%%%%%%%############*####
#***************#**************++*+*+*+*+++*++++++++*+****+++**#***********#***********************+***+++*****+****+++*++++++++++*******+*+*+++++****+********+**+++*****++********+*+***++******++*++******+*******************+++++*+*******************#%%%%%%***********+**********+*******************++++****+*+***#%@%@@@@@@@@@%#**********#%@@@@@@@@@@%%#*************######%%##%%%%%##################
*******************#***++++*+***++++**********+++++***************#*#*##***#**********************++*+***************+++++++++++++++**#******++++**************++++++++******************************++*****************++**++*+*+++++*****+******************%%%#*++*****************++++***+**+++*++*******+++++***++***#%%%@@%@@@@@%#************#%@@@@@@@@%%#***+*************#########%%%%####**###########
#*****************###***++*+******+*******+*+***+++***##*******############**#*#***************#**+**+***************+++++++++++*******##**##*+********#*#*********+++++*****************************+++*+*****++++**+**+*+++++*+++******+***+********+++*++****+++++++++++++++*+*+****+**+++++*+++**+****************+***#@%@@@@@@@%##*************#%%@@@@@@@%#**********+******#*##########%#%################
#************##*#*#####***#***+*+*****###******+*++++*####******################**#*#********##********+***+++*++++++++*******++*+*+*****#*********+*****#*****+++++*****++*************************************++++***+*+++++++++++++**++**++********+*++++++++++****++++++++++++++++++**+++***************************#%%%@@@@@@%%#******+********#%%@@@@@@%#************+*****#**########*#################**
##**####*#****#*############*#*******#######*##***+****####*#*######################**####*#****#*#****+*+++++++++++++++**********++*+******#**++*+***+*********************+++***********+****+++************+*+*++**++++++++++*++++**++++**+***********+++++++***+*+++++++++++++++++++++**+***+********+****+********#%%%%@@@@%%###***************%%%@@@@@%#*******************########*#######*#######*##****
######**##############%######***********#######******##*######*################*#########***************+=+++++++++++**++++********++************+**+**+++++++++*******++*++++++++**+++++++++++*++++++*++***+++**++++++++++++++++++++++++++*+++*****+***++++***********+*+**+++++++**++++++++*************************#%%%@%@@%%#**************+***#%%@@@@@@##******************##*###*#################****#***
########*##############%#######*********#######***#####*#*###*#*########################***************++++++++++++++++++*+*+******+*+*****++*+*********++++++++*+******+++++++++++++++++++++++++++++++++++++*+*++++*++++++++++*+*+++++++++++*****+*****+**+********++********++++++**+++**++*******+*+*************##%%@@@@@%###*************+****#%%%@@@@##**#**##*#********#####**#**#################*******
*###################%%##%########******#***#####**#######********#***####*#####**###****#***************+++++++++++++++****++++******+++***+++++++++***++++++++++++++++++++++++++++++*++++++++++++++++++++++++*++++*++++++++++*****+++++++++****+*************+++****+*+********++++***++++**+********************###%%%@@%@####******************#%%%%@@@%###******#**#**#***###**#**###########**#######******
#*####%####%%###%#%%%%%%%######*###*####***######*#*****##****+******###**#*****************+++==+*******+++++++++++++++++*+++++++*++++++++++*++++++++++*++*++*++++++++++++++++++++++++++++++++++++++++++++++++**++*++*+++++++++++++***+++*******+*********+**+*****++*******+++++++++**************************##%#%%%@@@%##*********************#%%@@%@%#**#**************************##########*#**#*###*****
####%#%#####%%#%#%%%%%%%%###############*##*#*#****+*****************************************++++++*****++++*++++*+++++++++++**+++++++++++++*++++++++++++++++*+++************+++++*+++++++++++++++++++++++++++++**+++++++++*++********+++******************++*******+**********+++++**************************##%%%%%%@@%##**####****************#%%@@@@%#****************##*************####*##***##*****#*****
##%%%#%%#%%%%%##%%%%%%%%%%###%###############*****+++****++**++++*+*++*******+****************++*+++**+***+***+******++=++++*+***+++++++++**+++++++*+++++++*****+********+*****+**+*++++++++++***++++++*****+***++++++++*+****+******+**************#*******+++************+********+***+***++***************##%%%%%@@@%##******##**************#%%%@@@%##******************#***********#*#*###*######*###******
%%%%%%%#%%%#%%%%%%%%%%%%%%%%%%##%%%##########******+***+***++++*++++*++***+*+++*++*****++******++++++****+*********++*++*++++++++++++++++++**++++*+++++*+*****+**+*********+*********+++++++++++++++**+*****++**+*+****************************+********************************++****************+*+*+*****#%%%%%@@@@%%##*********************#%%%@@@@#*********************##**###*#***#**##***####****#****#*
%%%%%###%#%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%######************+**+***+++++++++++*++++********++*****+********************+******+++++++++++++*++++*++++***++*******************+*****++++++++++++++*+***+********+********************************+*+++*******************+++*++++***+***********++++***++*+***##%#%@@@@%%##*****************+****##%%%@@@%##****************************###*####**#######**###***##
##%%#%#####%%%%%%%%#%%#%%%%%%%%%%%%%#%%%######*******++**+++*++******+++++++++++++*****+*+********+***************************++++++++++++****************************+++*+++++++++++++*++++*++*+**********+*++++*+********************++++++++++*************++*******+++**++************+*++++++*+****#%%##%%%@@@@%#****************+*++**#%#%%%@@@%##*#************#**********##****##########*#****########*
###%#####%###%%%%%%%###%%%%%%%%##%%%%%%%%###******************++***+***++**+++*+**+****++++++*+**********+**#*******#***#****+++*+*+++++**+*****+*++**************+**++*++*++++++++*******+********************+********************+***+*+++++++********+****+++*****++*++****+++++*+*++*++*+++++++****%%##%%%@%####*****************+*****%#%%%%@@%%#***********#***######**#############%####################
##########%###%%%%%######%%%%%###%%%%%%%##############********+*****+**+*++++++********+**++***************#******###*##************++***********++++++++++*********+++++++++++++++++++++******+**+******************+++**+*+++++****++++++++++*******+++++*+++++++++++*+++++++++++++++++++++++++***+*#####%%%%%#*******************++++***###%%%@%@@#******#***#######*###################%%%###########%######
######%####%%##%%%%#############%###%%%%%##############**####****************+*****************#******#**################**********#*****+***++***+*++++++**+*******+++++++++++++++++++++++++++**+********************+****+++++*********+++++++++++++==+++=+++++++++++++++++++++++=++++++++++++*++**#*###%%%%%%%#***###**************+***%%%%%%@@@%#*#*#***###**############%#%############%######%%###########
#%#######%##%##%#%%####%%####################################*##*******************************#*#*###**##*#############*********#**********+*******+++****************+++++++++++++++++++++++++++++******+*******+++++*++*++++++++++++++++++++++=++++++++======+++++++++++++++++++++++***++++*+*++**#*#####%%%%%%#######*########******##%#%%%@@@###***##################%###%%%%#%####**###########%%%#%##%#%#
##%######%%%#######*###%%%#*#############%###%#############*****#**************####****####**#*#############################****##*#***#****++**+**+++++++++*+++++++++++=======++++++++++++++++++++=+++++++++++++++++*++****++++++++++++++=+=++++=====++++++==++++++++++++++++++++*+*+*+++*+++++++*****##%%%%###%%%%%%##%%#########****##*##%%@@@%##***#################%##%%#%%%#%#%%#####%%%%######%%%%%###%##
###%##################*#*#***#############################*****#********+******########**##########**###########%##%%%#######*********************++++++**+++++++++++=+++++++++++++++++++++++++++++==+++++++++*++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++**********++++++++***********#####*#*****##*##*#######*#*####%%@@%%#######%%#######%#%%%%#%%%%%%%%%%%%%##%%%##########%###%#%%##
##%%#########%########*#**+**********#########**#########**********************+**######***#################%%##%%%%%%%########***************+*++***++*****+*++++++++++++++++++++++++++++*+++++=++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+*++**++++++++++++++*******+**********************#####****###%%%%###################%%%%##%%%#%%#%%%######%%##############*#####
#############%%##########********####**####*##****####******************#***##**########*#*#########%########%%##%%%#%%#%#########****************+**********+++*+++++++++++++++++*+++++*+++++++++++++++++++++++=++++++++++++++++=++++++++++++=+++++++++++++++++++++++++=++++++++++++++++++*+++++++*+*++**+++**********************##**#***######*#*#*#**#######*##*#######%%#%%%%############*#*#########*#####
#############*############***********#*##***#####*****************************#**####%%%######%#%%######%#############%##%#%#############******#*************+++++++++++++++++++++++++++++=++++=++=+++++++++==+=+++==+==++++++++++++++++++++====+++++++++++++++==+++++==++=====++++===+++++++++++++++++++++++++++++***+++++++++****++**************##***+**##********#####%##%##########*####*****########*####*
#########%#########################**###******####**************************#########%%%%%%%%%#%#%%#%%#######*###########################****************************++++++++++++++++++*+++++++++++++++++++++++=+++++++++++++++++++++++=+++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++***+++++++***++++++++++++*+*+********************################*##*#######**#*########**##*
#####%%%%%###################**########**#*#***#*##***#*****************################%%%%%%%%#%#%#####*#****#*##################**##########*#**+***************++++++++++++++***++++++++++++***++++*****+++***++*****++***++++++===+++====+++===========++++++++++++++++++*++*++++++****++***********+*++++*++**++++++++++*++**********+****************#*******#****#***################********####*#****#
###%%%%%%%%%%#################**#############*#*************************############%#####%#%%%####%%##%%##*********###*#*#######*#*****###########*****************++++++*++++**+*+***+++++*+***++*+****+**+****+***++++**++++++++++++++=++=+====+++========+++++++++++++++++++++++++******************+++++*+*++++++++++++*+*************************+***************************###*#########**#######*######
#####%%####%%%####%##%#####################*###**********************#**#**######%%%####%#################**#*****#######***##########***#****######****#******************************+++++++++***+++++*****+**********+++*++++**+++++++++++++++++++++++++++*++++++++++++++++=+++++++++++*++++*++++++++++***********++******************###***********************************###*#**######################*###
#######%####%%####%####%########*############*****##########**************###################*#########******###########****#*****#***************#******************************************+++*+++++**++***++*****+**+++++***+++++++++++++++++++++++*+**+++*+++++++*++++++++++++++++++++*++++++++++++++++*++++++***++++**+**********************************************+**##******************#########*#*#**
################%##%%###########################*###*###**#####**#******####*#################*##****########*###******########************************+***+**********#******************+******+++***++++**+*++*******++*+++*****++++++++++++++++*+++++++++++*+++++++++++++++++++++++++++++++++++++++++++++*++++*****+***+++************##************+***********************+****************#####****###*##*
#######%%%%%#####%###%%######*##############################****#*####*#####################*##*#######****#*######***#*######*********************************************++********+**********++**++*++++*++******+++++++***+*+++++++++++=+++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++**+++++****+++++++*******+*+*****************+************************************###***##************
How to Find Problems and Evaluate Your Solution
Choosing a Software Idea

As a disclaimer, the choice of which software to build matters, but it’s not going to make or break your ability to succeed.

You don’t marry the idea, you marry the people who’s problem it solves. The ideas come and go because products pivot, they solve the same problem in different ways, or they solve different problems altogether.

Get Ideas by Finding Problems

Notice how I didn’t title this section “Coming up with an idea.”

The phrase “coming up with an idea” puts you into a mindset that forces you to use your own creativity to make up a hypothetical problem for a hypothetical person. This will make you hypothetical money.

We want to solve for things that exist in the real world for real people who have real problems. This will make you real money.

I also want to point out that we’re not finding ideas, we’re finding problems. Ideas are worth a dime a dozen. People don’t pay for those, they pay to have their problems go away.

“Solve problems for people and you’ll never run out of a job.”

Your software idea should have an origin story that has names of real people experiencing tangible pain.

Here’s the story of how I came up with the idea for my first successful software.

It began with a simple DM to my friend Connor. I was loosely connected with him through college, and I reached out to grab coffee and learn about his social media marketing business, Aebly Studio.

We met up at Moxie, a coffee shop off of 16th St just south of Camelback Rd in Phoenix, AZ.

I was just a few months in to doing freelance software development full time after quitting my job doing marketing for a solar power company.

I wasn’t searching for a pain point that could be solved with software, I was just looking to learn about the business and how they operated, especially since I had a background in social media marketing.

We discussed all sorts of different aspects of their business. At some point though, Connor shared that they were texting clients pictures they were going to use for their client’s posts. They also texted over the captions.

This became a bottleneck for them as it was slow and difficult to get multiple posts approved at a time.

There were solutions in the market, but none were tailored to their specific needs.

I decided to build a prototype for a software that could do Instagram post approval with their clients and had it finished in a day or two.

At the time, I had no idea what I was doing. But as we’ll see, I had actually stumbled across an idea that I would grow into a software that would later be acquired.

With that story in mind, let’s evaluate why it was a good idea and discover a way to discern which software ideas are worth prioritizing over others.

Evaluating Your Software Idea

The following is a list of questions to evaluate if your start-up idea is good.

Knowing that the software from my story ultimately resulted in a successful acquisition, we’ll use my start-up as an example evaluation.

Do you have founder-market fit?

  • Are
    you
    uniquely qualified to solve this problem?
  • Can you build it and understand the customer better than most?

Since I had experience and domain expertise in social media from a job in the past, and personally knew the importance and difficulty of getting posts approved, I understood the problem very well and was equipped with development skills to bring the solution to life with my unique understanding of the problem.

Is the market big?

  • Either it’s big now or growing rapidly.
  • Example: Coinbase started small in a niche market, but the upside was massive.

Social media management is one of the largest fields in marketing today with hundreds of thousands of potential customers.

Is the problem acute?

  • Do users
    need
    this, or just kind of want it?
  • Example: Before Zoom, many remote teams struggled with unreliable, clunky video conferencing tools like Skype or WebEx that constantly dropped calls or had poor video quality. The demand for something that
    actually worked
    was an acute pain for distributed teams and companies going remote fast.

Without an efficient way to get posts approved, Connor’s business would be constrained by this issue. They needed a way to get this done, or they wouldn’t be able to scale. It was a need.

Is there competition?

  • Surprisingly,
    yes
    is often a
    good
    answer.
  • It shows the market is real. You just need an insight they missed.

Other post-approval tools existed, just none that they liked. Most software in the space were focused on providing a full suite of tools that didn’t apply to Aebly Studio’s approach to social media. They didn’t need post scheduling or AI post generation, they just needed a way to get posts approved. Providing a simple product made this solution stand out. This made the target audience smaller, but that wasn’t an issue to me.

Do you or people you know want this?

  • If not, you may be solving something no one actually needs.

I had a personal relationship with the first customer, Connor. They had a problem and were both willing and able to pay for it.

Bonus Questions For Evaluating An Idea

Some questions will apply more to some ideas that others. In my case, the following questions were less applicable.

Would you be a customer of your own software?

  • If you would build this to solve a problem for yourself, odds are that there are other people who have the same problem.

I wasn’t going to be using this software myself, but since I had a good relationship with the target customer used, I could rely on their feedback and insights to make changes, in addition to having insights to it myself.

Would you work on this for years?

  • You don’t need to
    start
    passionate, but success often makes the work exciting.

I sold this software in it’s infancy because I wasn’t interested in continuing to grow it as a company. So I’d definitely recommend thinking through this depending on your goals.

Has something changed recently?

  • New tech, regulation, or social behavior? These often create new opportunities.
  • Example: Checker’s API for background checks emerged as delivery services boomed.

Nothing had recently changed, but that wasn’t necessary for my idea.

Is it in a good idea space?

  • Some spaces (e.g. fintech infrastructure, vertical SaaS) have better success rates than others (e.g. ad tech, consumer social).

I would venture to say that the social media software for businesses is a good space, but I haven’t done the research on it.

Are there good proxies?

  • A successful startup in another market or region can signal opportunity.
  • Example: Rappi saw DoorDash succeeding in the U.S. and adapted it for Latin America.

Does the target audience have the money to pay for it?

  • If not, you may be creating a business that can’t breathe.

Final Thoughts

Search for ideas in the pains you experience in your field of expertise or through talking with people who have expertise in a field.