a:6:{i:0;s:11905:"				<div class="h1"><h1>Discover Andaman With Neil Island Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.andamanleisure.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.andamanleisure.co.in/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Discover Andaman With Neil Island Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Port Blair</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.andamanleisure.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Discover Andaman With Neil Island Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="84155"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_1/26949/148590.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/26949/148590.jpg"  height="150"  width="150"    alt="Discover Andaman With Neil Island Tour" title="Discover Andaman With Neil Island Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrive Andaman (Port Blair), Watersports Complex & Cellular Jail visit by day and Sound & Light show
								</p>
								<p class="aj">Arrive at the Port Blair Airport, Veer Savarkar Airport, an  representative will meet you and assist you to your hotel. The capital city of Andaman, Port Blair is famous for its pristine natural beauty and serene environment. The city offers fabulous views of coconut and palm trees, azure blue water and gleaming sand. It is one of the major tourist places in India.<br />
<br />
Relax and rest at the hotel. After lunch, spend some time at Water Sports Complex (closed on Wednesday). Indulge in water activities at your own cost; like on-water obstacle and non-motorized watersports in a safe area of the sea known as the Aqua Fun Park. Jet Ski, speed boat ride, glass bottom boat ride, banana boat ride, etc. are thrilling. (Please carry change of clothes) or opt to relax by the seaside at Ocean Blue cafe.<br />
<br />
In the evening, proceed to attend the fascinating Sound and Light Show at Cellular Jail (at 1800 or 1900 Hours, depending on light and sound show ticket availability) where the heroic saga of the Indian freedom struggle is brought to life with poignant music and lights.<br />
<br />
Once you've explored the attractions in Port Blair, return back to the hotel and retire for the day. Stay overnight in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Journey to Havelock by Ferry from Port Blair and visit Radhanagar Beach at Havelock
								</p>
								<p class="aj">Check out of the hotel and head towards Havelock, situated 54 kilometers away from Port Blair. The breathtaking views of beaches scattered by palm trees and coral reefs, azure blue water and amazing resorts in this island attract tourists from all over the world. The ferry takes up to 2.5 hours to reach Havelock. Upon your arrival at Havelock, check in at the hotel and relax for some time.<br />
<br />
Pay a visit to the famous Radhanagar Beach in the afternoon. This beach is not only the finest beach in India but also it has been honored as 'Asia's Best Beach' by the famous 'Time Magazine'. The blue water, peaceful environment and white sand offer an overwhelming look to this beach. Here you can enjoy sun basking and stroll in the soft sand. Also, guests can partake in various adventure sports such as scuba diving, game fishing, swimming and snorkeling etc.<br />
<br />
Post spending quality time at the beach, return back to the hotel and take rest. (Kindly remind hotel to provide packed breakfast at Port Blair since the same is not included at Havelock).</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Havelock: Excursion to Elephant Beach
								</p>
								<p class="aj">Today you are taken for an excursion to Elephant beach. Your ride will arrive at 0700 hours as the boat to the island expedition will leave at 0730 hours. Gear up for the most memorable snorkeling, at a distance of just 25 minutes by Boat. This scenic beach with fallen trees and white sand offers tranquil shallow waters perfect for beginner snorkelers. The boat goes right up to the beach. Enjoy snorkeling or spend the day lying on the beach and relaxing. The hard coral reef here starts close to shore at a depth of about 1 metre and has plenty of marine life.<br />
<br />
Return to your hotel for a relaxing night stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Ferry from Havelock to Neil Island and sightseeing at Neil Island
								</p>
								<p class="aj">After breakfast, check-out from the hotel and transfer to the jetty to board the ferry to Neil Island. Upon arrival, transfer to the Hotel in Neil Island and check-in. Set out for a sightseeing trip to Laxmanpur Beach and Bharatpur Beach in the evening. Enjoy a comfortable overnight stay at Neil Island.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Ferry from Neil Island to Port Blair
								</p>
								<p class="aj">After breakfast at the hotel, check-out and transfer to the jetty. Board the ferry to Port Blair. (ferry timing depends upon availability). Upon reaching Port Blair, transfer to your hotel and spend the rest of the day at leisure.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Port Blair – City Tour and Corbyn's Cove Beach
								</p>
								<p class="aj">Start the day with an appetizing breakfast, start for a tour of places in and around Port Blair. The City Tour starts with the famous Cellular Jail, which is a witness to the Indian freedom struggle. Next is Chatham Saw Mill, one of the oldest & largest in Asia). Forest Museum, is worth your time. At the Fisheries Museum, you would explore around 350 species of marine life such as starfish, fishes and live corals. In the Anthropological Museum, the tribal culture of the region is displayed. Here you will see a huge collection of weapons, models, clothes, baskets, photographs and tribal boats etc. The Naval Marine Museum, known as Samudrika Museum run and owned by the Indian Navy is a treasure of antique collections of corals and shells etc. The museum also displays the history, geography and culture of Andaman and Nicobar Islands. Later, enjoy a fantastic experience of discovering the Port Blair Museum and return back to the hotel for overnight stay.<br />
<br />
After lunch, proceed to visit Corbyn's Cove Beach. The only beach in Port Blair is ideal to relax and unwind. Proceed for local shopping.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Departure
								</p>
								<p class="aj">Take your return flight Port Blair for onward journey with fond memories of the mesmerizing Andaman.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.andamanleisure.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Discover Andaman With Neil Island Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="84155"/>
						</form>
						</div>
						
						";i:1;s:77:"Book Discover Andaman With Neil Island Tour - 6 Nights / 7 Days Tour Packages";i:2;s:138:"book discover andaman with neil island tour - 6 nights / 7 days tour packages, beaches and islands tour packages, port blair tour packages";i:3;s:180:"Andaman Leisure Pvt. Ltd. offers Discover Andaman With Neil Island Tour - 6 Nights / 7 Days tour package, budget Beaches and Islands tour packages for Port Blair at exciting price.";i:4;s:420:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair"        
		                 },
		      "description": "",
		      "name": "Discover Andaman With Neil Island Tour",
		      "telephone": "+91-9476010441"
		    }
		    </script>
			";i:5;N;}